1. 程式人生 > 實用技巧 >水印寬高比例自適應圖片(Java-Thumbnails)

水印寬高比例自適應圖片(Java-Thumbnails)

一般圖片打的水印都是固定寬高,這樣會在原圖尺寸過大或者過小的情況,打上去的水印太渺小,或者佔去太多面積。因此比較好的方法是根據原圖寬高,動態調整水印圖尺寸,保持和原圖大小相匹配,即你大我也大,你小我也小。

程式碼邏輯包含三點:

  1. 定一個水印尺寸比例。
  2. 根據原圖寬高x比例,得到新的水印寬高。
  3. 根據新的水印寬高生成新的水印,再執行新增水印操作。
    @Test
    public void watermarkWidthHeight() throws IOException {
        double bl = 0.18;//水印為原圖寬高比例
        //讀取原圖,獲取寬高
        File file = new File("D:\\Test\\wKgeyV9V9EaAEswvAAbhnus5POc405.png");
        BufferedImage image = ImageIO.read(file);
        //根據比例計算新的水印圖寬高
        int width = (int) (image.getWidth() * bl);
        int height = (int) (image.getHeight() * bl);
        //讀取水印圖
        URL url = FileUnitTest.class.getResource("/watermark.png");
        //生成新的水印圖
        BufferedImage bufferedImage = Thumbnails.of(url).size(width,height)
                .outputQuality(1f).keepAspectRatio(false).asBufferedImage();
        //使用新水印執行新增水印操作
        Thumbnails.of(file).watermark(Positions.BOTTOM_RIGHT, bufferedImage, 1f)
                .scale(1).toFile("D:\\Test\\" + System.currentTimeMillis());
    }