在签名图片上生成水印

项目情况是:在页面上进行签名,签名过后需要生成时间水印。

生成水印的代码如下:

 public static byte[] markImageByTextbystream(String logoText, byte[] srcImgstream, Integer degree) {

        ByteArrayOutputStream os = null;
        try {
            // 1、源图片
            Image srcImg = ImageIO.read(new ByteArrayInputStream(srcImgstream));
            int srcImgWidth = srcImg.getWidth(null);//获取图片的宽
            int srcImgHeight = srcImg.getHeight(null);//获取图片的高
            BufferedImage buffImg = new BufferedImage(srcImgWidth,
                    srcImgHeight, BufferedImage.TYPE_INT_RGB);

            // 2、得到画笔对象
            Graphics2D g = buffImg.createGraphics();
            // 3、设置对线段的锯齿状边缘处理
            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);
            // 4、设置水印旋转
            if (null != degree) {
                g.rotate(Math.toRadians(degree),
                        (double) buffImg.getWidth() / 2,
                        (double) buffImg.getHeight() / 2);
            }
            // 5、设置水印文字颜色
            g.setColor(color);
            // 6、设置水印文字Font
            g.setFont(font);
            // 7、设置水印文字透明度
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
                    alpha));
            // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
            //g.drawString(logoText, positionWidth, positionHeight);
            if(srcImg.getWidth(null)>280 && srcImg.getHeight(null)>10){
                g.drawString(logoText, srcImg.getWidth(null)-500, srcImg.getHeight(null)-10);
            }

            // 9、释放资源
            g.dispose();
            // 10、生成图片
            ImageIO.createImageOutputStream("");

            os = new ByteArrayOutputStream ();
            ImageIO.write(buffImg, "JPG", os);
            return os.toByteArray();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != os)
                    os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }
说明:这里的输入参数logoText是需要生成的水印内容,srcImgstream是目标图片文件的字节数组,degree是水印的旋转角度参数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值