java实现图⽚的叠加效果
实现效果图
这个效果的实现思路是:
1、先准备⼀张背景图,像素⾃⼰去定。像素越⾼最后⽣成的图⽚会更清晰,当然图⽚也会越⼤,注意这个背景图⼀定要是png格式的,要放⽤户
头像的位置要镂空,透明的。
⾄于为什么要⽤png格式的,主要是png格式⽀持⽆损压缩,能⽐较好的保存透明信息
2、准备⼀张任意格式需要置于透明区域的头像。这张图需要根据背景图的像素及镂空区域的⼤⼩去调整头像⼤⼩。当然这些是可以后端去做的
3、⽤java实现。先⽤Graphics画⼀张⼲净的图,⼤⼩为背景图⼀致,在根据你的需求,把像素调整后的头像画在指定x,y位置处,⼤⼩为头像
调整后的长宽。最后在把背景图画在整个画图上,那个镂空区域会把头像显⽰出来。相当于⼀个叠加效果。
这⾥直接把代码贴出来,包括图⽚的压缩,及最后图⽚的⽣成部分。
/***
* 按照指定⼤⼩缩放图⽚
* @param srcImgPath 原图⽚路径
* @param distImgPath 转换⼤⼩后图⽚路径
* @param width 转换后图⽚宽度大逆不道
* @param height 转换后图⽚⾼度
*/
public static void resizeImage(String srcImgPath, String distImgPath,int width, int height) 医德医风自我评价 throws IOException {
String subfix = "jpg";
subfix = ing(dexOf(".") + 1, ());
File srcFile = new File(srcImgPath);
File srcFile = new File(srcImgPath);
Image srcImg = (srcFile);
BufferedImage buffImg = null;
if (("png") || ("PNG")) {
buffImg = new BufferedImage(width, height, _INT_ARGB);
} el {
buffImg = new BufferedImage(width, height, _INT_RGB);
}
Graphics2D graphics = Graphics();
kgroun小学英语五年级 d();
or();
ct(0, 0, width, height);
age(ledInstance(width, height, _SMOOTH), 0, 0, null);
(buffImg, subfix, new File(distImgPath));
}
/**
* 图⽚叠加,底图⼩图,顶图⼤图,⼤图必须为png格式,因为只有png格式⽀持透明
*
* @param smalllPath 底图
* @param largePath 晚秋黄梨 ⼤图
* @param type ⽣成图⽚类型
* @param resultPaht ⽣成图⽚保存路径
*/
public static void imageOverlap(String smalllPath, String largePath, String type, String resultPaht,int x,int y) {
try {
("smalllPath: {}",smalllPath);
("largePath:有书真好作文 {}",largePath);
("type: {}",type);
("resultPaht: {}",resultPaht);
t(smalllPath,心律不齐怎么办 "底图路径为空");
t(largePath, "⼤图路径为空");
BufferedImage large = getBufferedImageFromUrl(largePath);
BufferedImage small = getBufferedImageFromUrl(smalllPath);
BufferedImage bufferedImage = new BufferedImage(th(), ght(), _INT_ARGB);
Graphics g = phics();
age(small, x, y,
th(), ght(), null);
th(), ght(), null);
age(large, 0, 0,
th(), ght(), null);
(bu项目复盘 fferedImage, type, new File(梦见红衣服 resultPaht));
愤怒的近义词 } catch (IOException e) {
throw new RuntimeException("合成图⽚失败", e);
}
}
/**
* 根据图⽚url获取图⽚
*
* @param url
* @return
* @throws IOException
*/
public static BufferedImage getBufferedImageFromUrl(String url) throws IOException {
if (With("") || With("")) {
return (new URL(url));
} el {
return (new File(url));
}
}
public static void main(String[] args) throws Exception {
//这⾥的489,489分别对应镂空区域的长、宽,需要⾃⼰根据⾃⼰选定的背景图测量⼀下
Image("/高尔基在人间 Urs/demo/Desktop/","/Urs/demo/Desktop/6c8809734c15d30f1d97e75d5e64d83a_",489
//这⾥的230,578分别对应镂空区域在背景图中的相对位置x,y,需要⾃⼰根据⾃⼰选定的背景图测量⼀下
verlap("/Urs/demo/Desktop/6c8809734c15d30f1d97e75d5e64d83a_",
"/Urs/demo/Desktop/",
"png",
"/Urs/demo/Desktop/6c8809734c15d30f1d97e75d5e64d83a_",
230,
578
);
}
本文发布于:2023-04-21 13:47:53,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/89/841156.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |