Add logo watermark to pictures in java
ImageIO image streaming technology is used here
public static void main(String[] args) throws IOException {
logowater(new File("F:/download/logo/baidu.png"),
new File("F:/download/壁纸/222/599379.jpg"),
new File("F:/download/tu"));
}
public static void logowater(File logo, File src, File dst) throws IOException {
//加载图标
BufferedImage lg = ImageIO.read(logo);
int lw = lg.getWidth();
int lh = lg.getHeight();
//加载图像
BufferedImage image = ImageIO.read(src);
int iw = image.getWidth();
int ih = image.getHeight();
Random random = new Random();
Graphics2D g = image.createGraphics();
//设置线条和文件的,抗锯齿(平滑)
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
int x = 0;
int y = 0;
//左上
x = 10;
y = 10;
//中间
x = (iw - lw) / 2;
y = (ih - lh) / 2;
//随机加位置logo
x = (random.nextInt(10, iw - lw - 10));
y = (random.nextInt(10, ih - lh - 10));
//设置logo的透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, .3f));
//设置logo的位置 还可以调整logo的大小比例 eg:lw+100 那么lh就必须是(lh+(int)(lh*100/lw))这样放置比例失调
//正常图标
//g.drawImage(lg,x,y,lw,lh,null);
//缩小图标
//g.drawImage(lg,x,y,lw-50,lh-((int)(lh*50)/lw),null);
//放大图标
g.drawImage(lg, x, y, lw + 300, lh + ((int) (lh * 300 / lw)), null);
g.dispose();
ImageIO.write(image, "png", new File(dst, UUID.randomUUID() + ".png"));
}
Original image:
Add an enlarged logo image: