zoukankan      html  css  js  c++  java
  • 使用thumbnailator给图片加水印

    引入方式:Maven

        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.8</version>
        </dependency>

    这个是谷歌的一个开源项目

    https://github.com/coobird/thumbnailator

    需要注意,自从2014年发布了0.4.8版本以后,不再更新

    /**
         * 添加水印后,输出文件到path
         * @param is 原图的输入流
         * @param markImg 水印图片
         * @param path 输出路径
         * @throws IOException
         */
        public static void markPicToFile(InputStream is,File markImg,String path) throws IOException {
            BufferedImage image = ImageIO.read(is);
            BufferedImage markImage = ImageIO.read(markImg);
            //原图的宽高
            int imgWidth = image.getWidth(null);
            int imgHeight = image.getHeight(null);
            //水印图片的宽高
            int markWidth = markImage.getWidth(null);
            int markHeight = markImage.getHeight(null);
    
            //计算输出水印图片的位置x和y轴
            int mark_x = imgWidth - imgWidth / 9;
            int mark_y = imgWidth / 9-imgWidth / 10;
            //计算输出水印图片的大小
            int mark_width = imgWidth / 10;
            int mark_height = (imgWidth * markHeight) / (10 * markWidth);
    
            //将水印图片压缩成输出的大小
            markImage = Thumbnails.of(markImage).size(mark_width,mark_height).asBufferedImage();
    
            //watermark(位置,水印图,透明度0.5f=50%透明度)
            //outputQuality(控制图片的质量,1f=100%高质量)
            Thumbnails.of(image)
          .size(imgWidth, imgHeight)
          .watermark(new Coordinate(mark_x,mark_y), markImage, 1f)
          .outputQuality(1f).toFile(path);
    }

    水印图片的大小,我是按原图的比例进行压缩,是原图的十分之一,水印位置是右上角

  • 相关阅读:
    Linux 显示当前时间
    Jenkins 更改工作目录;
    Jenkins 编译 .net 项目
    Jenkins 通过 maven 构建编译 JAVA 项目环境
    Jenkins
    Zatree
    Zabbix 邮件报警示例
    Zabbix 短信报警示例
    Linux 检测出口IP地址
    数据结构与算法面试题80道(4)
  • 原文地址:https://www.cnblogs.com/suruozhong/p/12021432.html
Copyright © 2011-2022 走看看