2013-08-25 120 views
-2

我想嘗試縮放圖像最多3次。圖像調整UpScale丟失質量

例如,

Original Image

最多縮放圖像

Resized Image

我用這library的圖像縮放。

剪斷下面的代碼做的伎倆,

public static BufferedImage getScaledSampledImage(BufferedImage img, 
      int targetWidth, int targetHeight, boolean higherQuality) { 

     ResampleOp resampleOp = new ResampleOp(targetWidth, targetHeight); 
     resampleOp.setUnsharpenMask(AdvancedResizeOp.UnsharpenMask.Normal); 
     BufferedImage rescaledImage = resampleOp.filter(img, null); 

     return rescaledImage; 
    } 

你可以看到有一個縮放後的圖像質量較低。我希望我可以放大圖像比原始圖像至少3倍,而不會丟失質量。

它是否可以使用?我是否需要改變現有的圖書館?

感謝

+2

沒有涉及「圖像丟失」。沒有圖像質量的大小開始。這是純粹的光學,與代碼無關。最好的解決方案是使用最大可能的原始圖像開始。 –

+1

可能的重複[如何在java中放大圖像而不會丟失質量?](http://stackoverflow.com/questions/9281385/how-might-i-enlarge-image-in-java-without-losing-quality) –

回答

5

的事實是,當你縮放圖像時,它必須創造一個有沒有數據。 (大致說來)。要做到這一點,你必須插入現有的像素之間來填充新的像素。您可以通過嘗試不同類型的插值獲得更好的結果 - 但對於不同種類的圖像,最佳方法會有所不同。

由於您的樣本圖像只是正方形,所以最近鄰居插值可能會給您最好的結果。如果您要放大風景或者肖像的圖像,則需要更聰明的算法。

結果很少看起來很完美,如果可能的話,最好從較大的圖像開始!

看看這裏瞭解問題。 http://en.wikipedia.org/wiki/Image_scaling#Scaling_methods