suruozhong

引入方式: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);
}

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

 

分类:

技术点:

相关文章:

  • 2021-12-05
  • 2021-12-15
猜你喜欢
  • 2021-12-22
  • 2021-12-21
  • 2021-12-15
  • 2021-12-22
相关资源
相似解决方案