Java图片插入文字或者图片,添加水印

水深无声 2023-07-20 10:43 73阅读 0赞

代码

  1. public class WaterMarkUtils {
  2. public static void main(String[] args) throws IOException {
  3. //作者qq1023732997
  4. Font font = new Font("04b_08", Font.PLAIN, 30);//字体
  5. String sourceImg = "D:\\云上\\666.png"; //源图片地址
  6. String targetImg = "D:\\云上\\666.png"; //新存储的地址
  7. String sourceImgs = "D:\\云上\\sy.png"; //水印图
  8. String watermark = "甲骨文对方会觉得舒服大损福的私服付多少你付";//水印内容
  9. Color color = new Color(43, 43, 43);
  10. //添加文字
  11. addWatermark(sourceImg, targetImg, watermark, color, font);
  12. //为图片添加图片水印
  13. markImgMark(sourceImg, sourceImgs, targetImg);
  14. }
  15. /** * 为图片添加图片水印 * * @param watermarkUrl 原图 * @param source 水印图片 * @param output 制作完成的图片 * @return * @throws IOException */
  16. public static String markImgMark(String watermarkUrl, String source, String output) throws IOException {
  17. String result = "添加图片水印出错";
  18. File file = new File(source);
  19. Image img = ImageIO.read(file);
  20. int width = img.getWidth(null);//水印宽度
  21. int height = img.getHeight(null);//水印高
  22. BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  23. Graphics2D g = bi.createGraphics();
  24. g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  25. g.drawImage(img.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
  26. ImageIcon imgIcon = new ImageIcon(watermarkUrl);
  27. Image con = imgIcon.getImage();
  28. float clarity = 0.6f;//透明度
  29. g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, clarity));
  30. g.drawImage(con, 10, 10, null);//水印的位置
  31. g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
  32. g.dispose();
  33. File sf = new File(output);
  34. ImageIO.write(bi, "jpg", sf); // 保存图片
  35. System.out.println("添加图片水印成功");
  36. return result;
  37. }
  38. /** * 设置文字水印 * * @param sourceImg 源图片路径 * @param targetImg 保存的图片路径 * @param watermark 水印内容 * @param color 水印颜色 * @param font 水印字体 * @throws IOException */
  39. public static void addWatermark(String sourceImg, String targetImg, String watermark, Color color, Font font) throws IOException {
  40. File srcImgFile = new File(sourceImg);
  41. Image srcImg = ImageIO.read(srcImgFile);
  42. int srcImgWidth = srcImg.getWidth(null);
  43. int srcImgHeight = srcImg.getHeight(null);
  44. BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
  45. Graphics2D g = bufImg.createGraphics();
  46. g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
  47. g.setColor(color);
  48. g.setFont(font);
  49. //设置水印的坐标
  50. int x = srcImgWidth - (g.getFontMetrics(g.getFont()).charsWidth(watermark.toCharArray(), 0, watermark.length()) + 200);
  51. int y = srcImgHeight - 600;
  52. g.drawString(watermark, x, y); //加水印
  53. g.dispose();
  54. // 输出图片
  55. FileOutputStream outImgStream = new FileOutputStream(targetImg);
  56. ImageIO.write(bufImg, "jpg", outImgStream);
  57. System.out.println("添加水印完成");
  58. outImgStream.flush();
  59. outImgStream.close();
  60. }
  61. }

发表评论

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

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

相关阅读

    相关 Java图片添加文字水印

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