2013-05-31 125 views
0

我正在處理當前應用中的圖像,並面臨諸如調整圖像大小,圖像質量等問題。如何根據縱橫比調整圖像大小而不會丟失質量?

我已經看到很多網站上傳圖像質量好,尺寸最小。增加或減少尺寸時,我注意到圖像質量的一件事不會鬆動。

所以我的問題是什麼將是有效的技術來處理以下問題

  1. 縮小圖像尺寸長度
  2. 調整圖像尺寸

例如,如果我想最小圖像尺寸應該是(寬度= 800 *高度= 600)所以如何增加尺寸而不考慮圖像質量以及如何根據比例減小圖像尺寸。

我正在使用asp.net MVC3 C#,但是您的任何語言的建議都會對我有所幫助。

+0

無論您更改圖像的大小,將其大小模式屬性設置爲普通或自動大小。 –

+0

你可以看看[this](http://stackoverflow.com/questions/11959758/java-maintaining-aspect-ratio-of-jpanel-background-image/11959928#11959928) – MadProgrammer

回答

1

有一件事,我注意到圖像質量不增加或減少尺寸時不會鬆動。

如果是這種情況,那麼圖像是一種矢量格式,比如SVG-PNG和JPEG圖像在增大尺寸時將始終失去它們的質量,因爲像素會被拉伸。有辦法可以緩解這種情況,但無法完全規避它。

如果你想裝出質量不過擴展Java中的圖像,你可以合理地得到:

BufferedImage scaled = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB); 
AffineTransform at = new AffineTransform(); 
at.scale(2.0, 2.0); 
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC); 
BufferedImage scaledImage = scaleOp.filter(img, scaled); 

,確定圖像是如何縮放的關鍵部分是AffineTransformOp.TYPE_BICUBIC,這通常提供了最好的結果(儘可能地,無論如何。)C#無疑會有一個類似的開關,可以設置。比例因子由at.scale(2.0, 2.0);給出,它將長度和高度增加兩倍 - 如果您想要將尺寸減小一半,請使用at.scale(0.5, 0.5)

+0

你是對的,但我們可以根據質量調整圖像大小? –

+0

@AskQuestion根據質量你是什麼意思?無論何時調整非SVG圖像的大小,都會在某種意義上喪失質量。 – berry120

+0

好的質量意味着分辨率。我已經在網站上傳了兩張圖片一張圖片(980 * 327)在保存這張圖片後保存了高質量和230KB的大小。我選中的圖片尺寸是136 KB,尺寸是(1873 * 625)。第二張圖片(600 * 400)的質量很差,所以尺寸保持不變,只是縮小尺寸。它可以完成嗎? –

相關問題