/**
* 给图片添加水印、可设置水印图片旋转角度
* @param iconPath 水印图片路径
* @param srcImgPath 源图片路径
* @param targerPath 目标图片路径
*/
public static void markImageByIcon(String iconPath, String srcImgPath,
String targerPath, Integer width, Integer height) {
OutputStream os = null;
Integer x = 0;
Integer y = 0;
// 通过图片宽高确定水印位置
Integer size = 0;
if (width >= height){
size = height / 2;
}else {
size = width / 2;
}
x = (width - size) / 2;
y = (height - size) / 2;
try {
Image srcImg = ImageIO.read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// 得到画笔对象
// Graphics g= buffImg.getGraphics();
Graphics2D g = buffImg.createGraphics();
// 设置对线段的锯齿状边缘处理
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg
.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);
// if (null != degree && 0 != degree) {
// // 设置水印旋转
// g.rotate(Math.toRadians(degree),
// (double) buffImg.getWidth() / 2, (double) buffImg
// .getHeight() / 2);
// }
// 水印图象的路径 水印一般为gif或者png的,这样可设置透明度
ImageIcon imgIcon = new ImageIcon(iconPath);
// 得到Image对象。
Image img = imgIcon.getImage();
float alpha = 1f; // 透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha));
// 表示水印图片的位置
g.drawImage(img, x, y, size, size, null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g.dispose();
os = new FileOutputStream(targerPath);
// 生成图片
ImageIO.write(buffImg, "JPEG", os);
// System.out.println(srcImgPath);
// System.out.println(targerPath);
// System.out.println(width);
// System.out.println(height);
// System.out.println(iconPath);
System.out.println("添加水印完成!");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != os)
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java给图片添加水印
猜你喜欢
转载自blog.csdn.net/yilia_jia/article/details/82662820
今日推荐
周排行