水印寬高比例自適應圖片(Java-Thumbnails)
阿新 • • 發佈:2020-10-23
一般圖片打的水印都是固定寬高,這樣會在原圖尺寸過大或者過小的情況,打上去的水印太渺小,或者佔去太多面積。因此比較好的方法是根據原圖寬高,動態調整水印圖尺寸,保持和原圖大小相匹配,即你大我也大,你小我也小。
程式碼邏輯包含三點:
- 定一個水印尺寸比例。
- 根據原圖寬高x比例,得到新的水印寬高。
- 根據新的水印寬高生成新的水印,再執行新增水印操作。
@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()); }