图片叠加效果Java代码实现
本文实例为大家分享了Java实现图片叠加效果展示的具体代码,供大家参考,具体内容如下
importjava.awt.AlphaComposite;
importjava.awt.Graphics2D;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
importjavax.imageio.ImageIO;
publicclassNewImageUtils{
/**
*
*@Title:构造图片
*@Description:生成水印并返回java.awt.image.BufferedImage
*@paramfile
*源文件(图片)
*@paramwaterFile
*水印文件(图片)
*@paramx
*距离右下角的X偏移量
*@paramy
*距离右下角的Y偏移量
*@paramalpha
*透明度,选择值从0.0~1.0:完全透明~完全不透明
*@returnBufferedImage
*@throwsIOException
*/
publicstaticBufferedImagewatermark(Filefile,FilewaterFile,intx,inty,floatalpha)throwsIOException{
//获取底图
BufferedImagebuffImg=ImageIO.read(file);
//获取层图
BufferedImagewaterImg=ImageIO.read(waterFile);
//创建Graphics2D对象,用在底图对象上绘图
Graphics2Dg2d=buffImg.createGraphics();
intwaterImgWidth=waterImg.getWidth();//获取层图的宽度
intwaterImgHeight=waterImg.getHeight();//获取层图的高度
//在图形和图像中实现混合和透明效果
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));
//绘制
g2d.drawImage(waterImg,x,y,waterImgWidth,waterImgHeight,null);
g2d.dispose();//释放图形上下文使用的系统资源
returnbuffImg;
}
/**
*输出水印图片
*
*@parambuffImg
*图像加水印之后的BufferedImage对象
*@paramsavePath
*图像加水印之后的保存路径
*/
privatevoidgenerateWaterFile(BufferedImagebuffImg,StringsavePath){
inttemp=savePath.lastIndexOf(".")+1;
try{
ImageIO.write(buffImg,savePath.substring(temp),newFile(savePath));
}catch(IOExceptione1){
e1.printStackTrace();
}
}
/**
*
*@paramargs
*@throwsIOException
*IO异常直接抛出了
*@authorbls
*/
publicstaticvoidmain(String[]args)throwsIOException{
StringsourceFilePath="D://img//di.png";
StringwaterFilePath="D://img//ceng.png";
StringsaveFilePath="D://img//new.png";
NewImageUtilsnewImageUtils=newNewImageUtils();
//构建叠加层
BufferedImagebuffImg=NewImageUtils.watermark(newFile(sourceFilePath),newFile(waterFilePath),0,0,1.0f);
//输出水印图片
newImageUtils.generateWaterFile(buffImg,saveFilePath);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。