使用靈活插值縮放 BufferedImage
在嘗試使用 Java API 調整 BufferedImage 大小時,實現很難產生所需的結果。程式碼利用 Graphics2D 類別對影像進行縮放變換,但遇到了失敗。
分析問題後發現,所提供的解決方案缺乏指定插值類型的功能。 AffineTransformOp 提供了這種至關重要的靈活性,可以選擇插值等重採樣技術。
考慮以下修訂後的程式碼:
BufferedImage before = getBufferedImage(encoded); int w = before.getWidth(); int h = before.getHeight(); BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); AffineTransform at = new AffineTransform(); at.scale(2.0, 2.0); AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR); after = scaleOp.filter(before, after);
此程式碼片段示範如何使用 AffineTransformOp 對影像進行重採樣雙線性插值,產生更平滑、更準確的結果。
值得注意的是,提供的程式碼在水平和垂直維度上均勻縮放影像。對於非對稱縮放,需要為 AffineTransform 物件中的每個軸指定獨立的縮放因子。
以上是如何在Java中透過插值實現靈活的圖像縮放?的詳細內容。更多資訊請關注PHP中文網其他相關文章!