平铺水印图片,直接时代码:
/**
* Created by QYT on 2017/7/2.
*/
public interface IWaterMark {
float ALPHA =1.0f;//透明度
String LOGO="logo.png";
/**
*
* @param image 需要增加水印的图片
* @param imageName 图片名称
* @param realUploadPath 图片存储绝对路径,假如时图片水印,那么此路径下应有一张水印Logo图片
* @return
*/
String execute(File image,String imageName,String realUploadPath);
}
/**
* Created by QYT on 2017/7/2.
*/
public class LogoWaterMarkImpl implements IWaterMark {
public String execute(File image, String imageName, String realUploadPath) {
String logoFileName="logo_"+imageName;
OutputStream os=null;
String separator=File.separator;
String logoPath=realUploadPath +separator+LOGO;
try {
//图片对象
Image image2= ImageIO.read(image);
int width=image2.getWidth(null);
int height=image2.getHeight(null);
//图片缓存 对象
BufferedImage bufferedImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//绘图工具
Graphics2D g=bufferedImage.createGraphics();
//使用绘图工具将原图绘制到图片缓存 对象,从坐标0,0开始绘制,width,height到原图的宽高
g.drawImage(image2,0,0,width,height,null);
//读取水印图片
File logo =new File(logoPath);
Image imageLogo=ImageIO.read(logo);
int widthLogo=imageLogo.getWidth(null);
int heightLogo=imageLogo.getHeight(null);
//设置透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,ALPHA));
//增加水印,不平铺
//g.drawImage(imageLogo,0,0,null);
//平铺水印图片
//以图片中心点旋转30度
g.rotate(Math.toRadians(30),width/2,height/2);
//水印的起始坐标
int x=0;
int y;
while (x<width*1.5){
y=0;
while (y<height*1.5){
g.drawImage(imageLogo,x,y,null);
y+=heightLogo+10;
}
x+=widthLogo+10;
}
g.dispose();
//输出图片
os=new FileOutputStream(realUploadPath+separator+logoFileName);
JPEGImageEncoder encoder= JPEGCodec.createJPEGEncoder(os);
encoder.encode(bufferedImage);
}catch (Exception e){
e.printStackTrace();
}finally {
if(os != null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return realUploadPath+separator+logoFileName;
}
public static void main(String[] args) {
IWaterMark waterMark=new LogoWaterMarkImpl();
String d=waterMark.execute(new File("C:\\Users\\QYT\\Pictures\\ddd.jpg"),"ddd.jpg","E:\\watermark");
System.out.println(d);
}
}
图片等比例缩放可使用:
thumbnailator