Java uses ImageI to add logo watermark to pictures

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:

599379
Add an enlarged logo image:
insert image description here

Guess you like

Origin blog.csdn.net/qq_59088934/article/details/128592694