java实现图片的叠加效果

更新时间:2023-04-21 13:47:53 阅读: 评论:0


2023年4月21日发(作者:醒来觉得甚是爱你)

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 {

//这⾥的489489分别对应镂空区域的长、宽,需要⾃⼰根据⾃⼰选定的背景图测量⼀下

Image("/高尔基在人间 Urs/demo/Desktop/","/Urs/demo/Desktop/6c8809734c15d30f1d97e75d5e64d83a_",489

//这⾥的230578分别对应镂空区域在背景图中的相对位置xy,需要⾃⼰根据⾃⼰选定的背景图测量⼀下

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 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图