ueditor二次开发:ueditor上传图片添加水印jsp
云起网2019-05-21
二次开发491
编辑器图片上传,很多都需要加水印防盗
ActionEnter.java 中的exec()方法。 将else中的代码修改为:
/** * 给图片添加水印 * @param iconPath 水印图片路径 * @param srcImgPath 源图片路径 * @param targerPath 目标图片路径 */ String a = this.invoke(); String sy = a.substring(11, 18); if(sy.equals("SUCCESS")){ String srcImgPath = "F:/eclipseworkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/GeekOA/"+a.substring(a.indexOf("url")+7, a.length()-2);//获取图片源地址 //调用方法添加水印 ImageMarkLogoByIcon icon = new ImageMarkLogoByIcon(); String iconPath = "f:/img/geek.png";//水印图片路径 icon.markImageByIcon(iconPath, srcImgPath, srcImgPath);//此处第三、第二个参数一样,都是图片源路径,这样写是为了将原图片替换为添加水印后的图片 } return a; }
水印代码
import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import javax.imageio.ImageIO; import javax.swing.ImageIcon; /** * 图片水印 * @blog http://sjsky.iteye.com * @author Michael */ public class ImageMarkLogoByIcon { /** * @param args */ // public static void main(String[] args) { // String srcImgPath = "f:/img/1.png"; // String iconPath = // String targerPath = "f:/img/sy01.png"; // String targerPath2 = "f:/img/sy02.png"; // // 给图片添加水印 // ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath); // // 给图片添加水印,水印旋转-45 // ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath2, // -45); // // } /** * 给图片添加水印 * @param iconPath 水印图片路径 * @param srcImgPath 源图片路径 * @param targerPath 目标图片路径 */ public static void markImageByIcon(String iconPath, String srcImgPath, String targerPath) { markImageByIcon(iconPath, srcImgPath, targerPath, null); } /** * 给图片添加水印、可设置水印图片旋转角度 * @param iconPath 水印图片路径 * @param srcImgPath 源图片路径 * @param targerPath 目标图片路径 * @param degree 水印图片旋转角度 */ public static void markImageByIcon(String iconPath, 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); // 得到画笔对象 // 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) { // 设置水印旋转 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 = 0.5f; // 透明度 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 表示水印图片的位置 g.drawImage(img,300, 300, null); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); g.dispose(); os = new FileOutputStream(targerPath); //水印添加完成,删除源文件,开始生成添加水印照片 File file = new File(targerPath); file.delete(); // 生成图片 ImageIO.write(buffImg, "JPG", os); System.out.println("图片完成添加Icon印章。。。。。。"); } catch (Exception e) { e.printStackTrace(); } finally { try { if (null != os) os.close(); } catch (Exception e) { e.printStackTrace(); } } } }
参考
https://blog.csdn.net/zhengsaisai/article/details/69389675
很赞哦! ()