package com.topinfo.sxzy.util;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
/**
* Created by Administrator on 2017/5/12.
*/
public class picMark {
//水印文字
public static final String MARK_NAME = "安全监管专用,复印无效";
//字体样式
public static final String FONT_NAME = "微软雅黑";
//粗字体
public static final int FONT_STYLE = Font.BOLD;
//字体大小
public static final int FONT_SIZE = 20;
//字体颜色
public static final Color FONT_COLOR = Color.BLACK;
/**
* 给图片添加水印、可设置水印图片旋转角度
* @param srcImgPath 源图片路径
* @param targerPath 目标图片路径
* @param degree 水印图片旋转角度
*/
public static void markImageByIcon(String srcImgPath,
String targerPath, Integer degree) {
OutputStream os = null;
try {
Image srcImg = ImageIO.read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// 得到画笔对象
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);
//添加的水印文字,字体风格,字体大小
g.setFont(new Font(FONT_NAME, FONT_STYLE, srcImg.getWidth(null)/FONT_SIZE));
//字体颜色
g.setColor(FONT_COLOR);
if (null != degree) {
// 设置水印旋转,后面2个参数代表按图片的中心点旋转
g.rotate(Math.toRadians(degree),
(double) buffImg.getWidth() / 2, (double) buffImg
.getHeight() / 2);
}
float alpha = 0.3f; // 透明度,越小越透明
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha));
//水印字体名字和位置
g.drawString(MARK_NAME, srcImg.getWidth(null)*1/4, srcImg.getHeight(null)*1/2);
g.dispose();
os = new FileOutputStream(targerPath);
//生成图片
ImageIO.write(buffImg, "JPG", os);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != os)
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
/**
* Created by Administrator on 2017/5/12.
*/
public class picMark {
//水印文字
public static final String MARK_NAME = "安全监管专用,复印无效";
//字体样式
public static final String FONT_NAME = "微软雅黑";
//粗字体
public static final int FONT_STYLE = Font.BOLD;
//字体大小
public static final int FONT_SIZE = 20;
//字体颜色
public static final Color FONT_COLOR = Color.BLACK;
/**
* 给图片添加水印、可设置水印图片旋转角度
* @param srcImgPath 源图片路径
* @param targerPath 目标图片路径
* @param degree 水印图片旋转角度
*/
public static void markImageByIcon(String srcImgPath,
String targerPath, Integer degree) {
OutputStream os = null;
try {
Image srcImg = ImageIO.read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// 得到画笔对象
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);
//添加的水印文字,字体风格,字体大小
g.setFont(new Font(FONT_NAME, FONT_STYLE, srcImg.getWidth(null)/FONT_SIZE));
//字体颜色
g.setColor(FONT_COLOR);
if (null != degree) {
// 设置水印旋转,后面2个参数代表按图片的中心点旋转
g.rotate(Math.toRadians(degree),
(double) buffImg.getWidth() / 2, (double) buffImg
.getHeight() / 2);
}
float alpha = 0.3f; // 透明度,越小越透明
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
alpha));
//水印字体名字和位置
g.drawString(MARK_NAME, srcImg.getWidth(null)*1/4, srcImg.getHeight(null)*1/2);
g.dispose();
os = new FileOutputStream(targerPath);
//生成图片
ImageIO.write(buffImg, "JPG", os);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != os)
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}