java 图片添加水印(文字水印+图片水印)

曾经终败给现在 2023-01-09 15:50 484阅读 0赞

一、图片水印(水印文件覆盖到源文件上)

  1. /**
  2. * @param buffImg 源文件(BufferedImage)
  3. * @param waterImg 水印文件(BufferedImage)
  4. * @param x X偏移量
  5. * @param y Y偏移量
  6. * @param alpha 透明度, 选择值从0.0~1.0: 完全透明~完全不透明
  7. * @return BufferedImage
  8. * @throws IOException
  9. * @Title: 构造图片
  10. * @Description: 生成水印并返回java.awt.image.BufferedImage
  11. */
  12. public static BufferedImage overlyingImage(BufferedImage buffImg, BufferedImage waterImg, int x, int y, float alpha) throws IOException {
  13. // 创建Graphics2D对象,用在底图对象上绘图
  14. Graphics2D g2d = buffImg.createGraphics();
  15. int waterImgWidth = waterImg.getWidth();// 获取层图的宽度
  16. int waterImgHeight = waterImg.getHeight();// 获取层图的高度
  17. // 在图形和图像中实现混合和透明效果
  18. g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
  19. // 绘制
  20. g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null);
  21. g2d.dispose();// 释放图形上下文使用的系统资源
  22. return buffImg;
  23. }

效果图:

源文件(buffImg):watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjQ4MDI5_size_16_color_FFFFFF_t_70
水印文件(waterImg):watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjQ4MDI5_size_16_color_FFFFFF_t_70 1
最后效果:watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjQ4MDI5_size_16_color_FFFFFF_t_70 2

根据需要设置透明度、旋转角度、铺满样式

二、文字水印(由于要设置旋转效果,所以为了让展示效果铺满整个图片,所以x和y的偏移量取负数,效果好看些)

  1. /** 文字水印
  2. * @param buffImg 源文件(BufferedImage)
  3. * @param x X偏移量
  4. * @param y Y偏移量
  5. * @param alpha 透明度, 选择值从0.0~1.0: 完全透明~完全不透明
  6. * @return BufferedImage
  7. * @throws IOException
  8. * @Title: 构造图片
  9. * @Description: 生成水印并返回java.awt.image.BufferedImage
  10. */
  11. public static BufferedImage overlyingImageFont(BufferedImage buffImg, int x, int y, float alpha) throws IOException {
  12. // 创建Graphics2D对象,用在底图对象上绘图
  13. Graphics2D g = buffImg.createGraphics();
  14. // 3、设置对线段的锯齿状边缘处理
  15. g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
  16. RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  17. //设置旋转(旋转角度,旋转x轴定点,y轴定点)
  18. g.rotate(Math.toRadians(45),
  19. 0D,
  20. 0D);
  21. Font font = new Font("宋体", Font.BOLD, 20);
  22. //设置字体
  23. g.setFont(font);
  24. //设置颜色
  25. g.setColor(Color.GRAY);
  26. // 设置透明效果
  27. g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
  28. // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
  29. /**开始平铺界面*/
  30. for (int i = 0; i < 20; i++) {
  31. for (int j = 0; j < 20; j++) {
  32. y+=150;
  33. g.drawString("我是文字内容", x, y);
  34. }
  35. x+=150;
  36. y=0;
  37. }
  38. g.dispose();// 释放图形上下文使用的系统资源
  39. return buffImg;
  40. }

效果图:

源文件(buffImg):watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjQ4MDI5_size_16_color_FFFFFF_t_70
最后效果:watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjQ4MDI5_size_16_color_FFFFFF_t_70 3

发表评论

表情:
评论列表 (有 0 条评论,484人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java图片添加文字水印

    闲着没事,研究了下图片水印的事儿,图片水印虽然恶心,而且大大的影响了图片的美观,试想一下,一张美女的性感写真照,下方来了个大大的水印“XXXX所有”,看着那猥琐的文字水印,是不

    相关 Java图片添加水印

    更新点 [考拉博客][Link 1] 文章发布增加首页背景图片 图片增加文本水印,根据图片大小自动设置水印字体大小 -----------------