public interface WaterMark {
public static final String FONT_NAME = "华文新魏";
public static final int FONT_STYLE = Font.CENTER_BASELINE; //斜体
public static final int FONT_SIZE = 15; //文字大小
public static final Color FONT_COLOR = Color.black;//文字颜色
public static String confirm ="本人已确认以上配置"; //
public static float ALPHA = 0.6F; //文字水印透明度
/*
* 添加文字水印
*/
public boolean addWaterMark(String contractPath,String contractBuildPath,String realname,String type);
}
public class WaterMarkImpl implements WaterMark{ /* * 添加文字水印 */ public boolean addWaterMark(String contractPath,String contractBuildPath,String realname,String type){ OutputStream os=null; //获取原图文件 File img=new File(contractPath); System.out.println(img.getAbsolutePath()); try { //1.创建图片缓存对象 Image image=ImageIO.read(img); int width=image.getWidth(null); int height=image.getHeight(null); BufferedImage bufImg=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //2.创建Java绘图工具对象 Graphics2D g=bufImg.createGraphics(); //3.使用绘图工具对象将原图绘制到图片缓存对象 g.drawImage(image, 0, 0, width, height,null); //4.使用绘图工具对象将水印(文字或图片)绘制到图片缓存对象 /*GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] fontFamilies = ge.getAvailableFontFamilyNames(); for (String s : fontFamilies) { System.out.println(s); }*/ //g.setFont(new Font("latarcyrheb-sun16",FONT_STYLE,FONT_SIZE)); //g.setFont(new Font(FONT_NAME,FONT_STYLE,FONT_SIZE)); g.setColor(FONT_COLOR); //水印透明度的设置 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,ALPHA)); //开始绘制 switch(type){ case "contract": g.setFont(new Font(FONT_NAME,FONT_STYLE,FONT_SIZE)); g.drawString(realname, 300, 160); g.drawString(realname,630,965); //获取系统时间 Calendar c=Calendar.getInstance(); int year=c.get(Calendar.YEAR); int day=c.get(Calendar.DATE); int month=c.get(Calendar.MONTH)+1; g.drawString(year+"", 300, 645); g.drawString(month+"", 400, 645); g.drawString(day+"", 456, 645); g.drawString(year+"", 595, 1105); g.drawString(month+"", 680,1105 ); g.drawString(day+"", 760, 1105); break; case "config": g.setFont(new Font(FONT_NAME,FONT_STYLE,24)); SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd"); Date date=new Date(); g.drawString(confirm,(float)(width*0.6),(float)(height*0.8)); g.drawString(realname,(float)(width*0.62),(float)(height*0.84)); g.drawString(sdf.format(date),(float)(width*0.69),(float)(height*0.84)); break; } //释放工具 g.dispose(); //创建文件输出流,输出指向最终的文件 os=new FileOutputStream(contractBuildPath); //5.创建图像文件编码工具类 //JPEGImageEncoder en=JPEGCodec.createJPEGEncoder(os); //6 使用图像编码工具类,输出缓存图像到目标文件 //en.encode(bufImg); ImageIO.write(bufImg, "jpg", os); } catch (IOException e) { e.printStackTrace(); return false; }finally{ if(os!=null){ try { os.close(); //关闭流 } catch (Exception e2) { e2.printStackTrace(); } } } return true; } }
项目演示:点击打开链接
源码地址:点击打开链接