利用工具类为ueditor上传图片添加水印(JAVA版本)

https://blog.csdn.net/zhengsaisai/article/details/69389675

今日需要实现图片添加水印功能,由于网站使用的编辑器是百度的开源编辑器ueditor,上网查询资料后发现很麻烦,需要修改的地方比较多,好吧,其实我是看不懂那些修改的代码。。。。。。。。。。。。。。。。。。。。。。。。。。。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

上网找了一个为图片添加水印的工具类,测试了一下发现还挺不错,于是就添加到了项目里。

具体实现如下:

工具类代码如下:

 
  1. package com.howin.util;

  2.  
  3. import java.awt.AlphaComposite;

  4. import java.awt.Graphics2D;

  5. import java.awt.Image;

  6. import java.awt.RenderingHints;

  7. import java.awt.image.BufferedImage;

  8. import java.io.File;

  9. import java.io.FileOutputStream;

  10. import java.io.OutputStream;

  11. import javax.imageio.ImageIO;

  12. import javax.swing.ImageIcon;

  13. /**

  14. * 图片水印

  15. * @blog http://sjsky.iteye.com

  16. * @author Michael

  17. */

  18. public class ImageMarkLogoByIcon {

  19.  
  20. /**

  21. * @param args

  22. */

  23. // public static void main(String[] args) {

  24. // String srcImgPath = "f:/img/1.png";

  25. // String iconPath =

  26. // String targerPath = "f:/img/sy01.png";

  27. // String targerPath2 = "f:/img/sy02.png";

  28. // // 给图片添加水印

  29. // ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath);

  30. // // 给图片添加水印,水印旋转-45

  31. // ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath2,

  32. // -45);

  33. //

  34. // }

  35.  
  36. /**

  37. * 给图片添加水印

  38. * @param iconPath 水印图片路径

  39. * @param srcImgPath 源图片路径

  40. * @param targerPath 目标图片路径

  41. */

  42. public static void markImageByIcon(String iconPath, String srcImgPath,

  43. String targerPath) {

  44. markImageByIcon(iconPath, srcImgPath, targerPath, null);

  45. }

  46.  
  47. /**

  48. * 给图片添加水印、可设置水印图片旋转角度

  49. * @param iconPath 水印图片路径

  50. * @param srcImgPath 源图片路径

  51. * @param targerPath 目标图片路径

  52. * @param degree 水印图片旋转角度

  53. */

  54. public static void markImageByIcon(String iconPath, String srcImgPath,

  55. String targerPath, Integer degree) {

  56. OutputStream os = null;

  57. try {

  58. Image srcImg = ImageIO.read(new File(srcImgPath));

  59.  
  60. BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),

  61. srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);

  62.  
  63. // 得到画笔对象

  64. // Graphics g= buffImg.getGraphics();

  65. Graphics2D g = buffImg.createGraphics();

  66.  
  67. // 设置对线段的锯齿状边缘处理

  68. g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,

  69. RenderingHints.VALUE_INTERPOLATION_BILINEAR);

  70.  
  71. g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg

  72. .getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);

  73.  
  74. if (null != degree) {

  75. // 设置水印旋转

  76. g.rotate(Math.toRadians(degree),

  77. (double) buffImg.getWidth() / 2, (double) buffImg

  78. .getHeight() / 2);

  79. }

  80.  
  81. // 水印图象的路径 水印一般为gif或者png的,这样可设置透明度

  82. ImageIcon imgIcon = new ImageIcon(iconPath);

  83.  
  84. // 得到Image对象。

  85. Image img = imgIcon.getImage();

  86.  
  87. float alpha = 0.5f; // 透明度

  88. g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,

  89. alpha));

  90.  
  91. // 表示水印图片的位置

  92. g.drawImage(img,300, 300, null);

  93.  
  94. g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));

  95.  
  96. g.dispose();

  97.  
  98. os = new FileOutputStream(targerPath);

  99. //水印添加完成,删除源文件,开始生成添加水印照片

  100. File file = new File(targerPath);

  101. file.delete();

  102. // 生成图片

  103. ImageIO.write(buffImg, "JPG", os);

  104.  
  105. System.out.println("图片完成添加Icon印章。。。。。。");

  106. } catch (Exception e) {

  107. e.printStackTrace();

  108. } finally {

  109. try {

  110. if (null != os)

  111. os.close();

  112. } catch (Exception e) {

  113. e.printStackTrace();

  114. }

  115. }

  116. }

  117. }

 

修改com.baidu.uedior 包下的ActionEnter.java 中的exec()方法。

将else中的代码修改为:

https://blog.csdn.net/zhengsaisai/article/details/69389675

[java] view plain copy

  1. <code class="language-java">            /**   
  2.              * 给图片添加水印   
  3.              * @param iconPath 水印图片路径   
  4.              * @param srcImgPath 源图片路径   
  5.              * @param targerPath 目标图片路径   
  6.              */    
  7.             String a = this.invoke();  
  8.             String sy = a.substring(11, 18);  
  9.             if(sy.equals("SUCCESS")){  
  10.                 String srcImgPath = "F:/eclipseworkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/GeekOA/"+a.substring(a.indexOf("url")+7, a.length()-2);//获取图片源地址  
  11.                 //调用方法添加水印  
  12.                 ImageMarkLogoByIcon icon = new ImageMarkLogoByIcon();  
  13.                 String iconPath = "f:/img/geek.png";//水印图片路径  
  14.                 icon.markImageByIcon(iconPath, srcImgPath, srcImgPath);//此处第三、第二个参数一样,都是图片源路径,这样写是为了将原图片替换为添加水印后的图片  
  15.             }  
  16.             return a;  
  17.         }</code>  

水印添加效果:红色圈中的

猜你喜欢

转载自blog.csdn.net/qq_35232663/article/details/82086186