
package suiyin;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class Timg {
public static void main(String[] args) {
//源图片路径
String st1 = "C:\Users\w1663\Pictures\Camera Roll\img.png";
//水印图片路径
String st2 = "C:\Users\w1663\Pictures\Camera Roll\sy.png";
//目标图片路径
String st3 = "C:\Users\w1663\Pictures\Camera Roll\img4.png";
//水印图片旋转度
Integer xz = 90;
timg(st1, st2, st3, xz);
}
public static void timg(String st1, String st2, String st3, Integer xz) {
try {
//读取源图片信息
var m = ImageIO.read(new File(st1));
//创建画布
BufferedImage img = new BufferedImage(m.getWidth(), m.getHeight(), BufferedImage.TYPE_INT_ARGB);
//创建画笔
var g = img.createGraphics();
//将源图片信息画入画布
g.drawImage(m, 0, 0, m.getWidth(), m.getHeight(), null);
//设置对线段的锯齿状边缘处理
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
//新建图标对象读取水印图片
ImageIcon imageIcon = new ImageIcon(st2);
//获取图标的图片
Image image = imageIcon.getImage();
//设置图标的透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));
//设置图标位置
int x = img.getWidth() - image.getWidth(null) - 10;
int y = img.getHeight() - 10;
//判断旋转角度是否为空进行旋转
if (xz != null) {
g.rotate(Math.toDegrees(xz), img.getWidth() - image.getWidth(null) / 2 - 10, img.getHeight() - image.getHeight(null) / 2 - 10);
}
//将图标画入画布中
g.drawImage(image, x, y - image.getHeight(null), null);
//将图标和源图片结合
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
//清空画笔
g.dispose();
//建立写入流目标图片对象
FileOutputStream out = new FileOutputStream(st3);
//将画布信息传入文件中
ImageIO.write(img, "png", out);
} catch (IOException e) {
e.printStackTrace();
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)