需求:项目生成协议,需要多个用户签字,然后把签字图片合到一张大图上.这里是我后端负责实现,用java自带的api即可,一般不需要旋转,degree参数给以给null.
代码如下:
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;/*** 从左到右x,y,x,y,x,y*/private static int[] xy = {100,2100,450,2100,750,2100};/*** 给图片添加水印、可设置水印图片旋转角度* @param iconPaths 水印图片路径* @param srcImgPath 源图片路径* @param targerPath 目标图片路径* @param degree 水印图片旋转角度*/public static void markImageByIcon(List<String> iconPaths, String srcImgPath,String targerPath, Integer degree) {OutputStream os = null;try {Image srcImg = ad(new File(srcImgPath));BufferedImage buffImg = new Width(null),Height(null), BufferedImage.TYPE_INT_RGB);// 得到画笔对象Graphics2D g = ateGraphics();// 设置对线段的锯齿状边缘处理g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);g.Width(null), Height(null), Image.SCALE_SMOOTH), 0, 0, null);if (null != degree) {// 设置水印旋转g.Radians(degree),(double) Width() / 2, (double) Height() / 2);}// 水印图象的路径 水印一般为gif或者png的,这样可设置透明度//2人或3人签字布局int aa = 1;for (String s: iconPaths) {ImageIcon imgIcon = new ImageIcon(s);Image img = Image();if(aa == 1){g.drawImage(img, xy[0], xy[1], null);aa = 2;}else if (aa == 2){g.drawImage(img, xy[2], xy[3], null);aa = 3;}else if (aa == 3){g.drawImage(img, xy[4], xy[5], null);}}// 得到Image对象。float alpha = 1f; // 透明度g.Instance(AlphaComposite.SRC_ATOP,alpha));g.Instance(AlphaComposite.SRC_OVER));g.dispose();os = new FileOutputStream(targerPath);// 生成图片ImageIO.write(buffImg, "png", os);} catch (Exception e) {e.printStackTrace();} finally {try {if (null != os)os.close();} catch (Exception e) {e.printStackTrace();}}}
本文发布于:2024-01-31 05:17:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170664946925835.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |