2012-09-01 220 views
0

我正在嘗試調整圖片格式jpg的圖片大小,以降低圖片的分辨率,以便在下載到網站HTML時將圖片尺寸縮小。在鏈接中使用教程: image resizing tutorial嘗試縮小圖片尺寸時圖片尺寸變大了

我設法調整分辨率,包括在需要時裁剪。我的問題是,圖像的實際大小變得更大,而不是像我所期望的那樣變小。

有什麼想法嗎?

+0

「實際大小」是指字節或像素? –

+0

在過去,我用過這個:http://www.hanselman.com/blog/NuGetPackageOfWeek11ImageResizerEnablesCleanClearImageResizingInASPNET.aspx –

+0

@Jon Skeet通過實際大小我的意思是字節。 –

回答

4

如果在縮小尺寸時JPEG圖像文件變大,這是因爲您使用比原始設置更高的質量設置來保存它。

+0

我試着玩InterpolationMode屬性,但不管文件是否越來越大。有一件事要提的是,我試圖調整大小的jpg文件是5kb(導致一個27 kb的文件),這可能意味着它已經被壓縮過了。 –

+0

@mashtagidi:您應該使用「InterpolationMode.HighQualityBicubic」來獲取最佳壓縮的圖像。使用「最近鄰居」會使大多數圖像難以壓縮。如果原始圖像只有5 kb,並且尺寸足夠大,您希望將其縮小,則可能會以相當低的質量設置進行保存。在保存文件時降低質量設置,直到獲得所需的文件大小,然後查看圖像質量是否可接受。 – Guffa

+0

謝謝。 「保存文件時降低質量設置」。我如何控制它?我使用Image類中內置的save()函數。 –

2

當使用JPEG等壓縮圖像格式時,這很正常。這是由縮小圖像大小時選擇的過濾器引起的。例如,Graphics類的默認選擇是InterpolationMode.Bilinear。對於縮小圖像縮小版本來說,它做得非常好。但是由於過濾算法的原因,圖像增加了許多額外的顏色。由此產生的圖像不會像原始圖像一樣壓縮,實際上可能需要更多的存儲空間。

你必須選擇一個質量較低的過濾器來避免這種情況,如InterpolationMode.NearestNeighbor。是的,看起來不會那麼好。一般來說,您應該避免重新壓縮已經以jpeg等有損格式壓縮的圖像。

+0

當你說我應該避免重新壓縮已經壓縮的圖像時,你會假設我正在壓縮的圖像已經被壓縮了嗎?或者這是一個一般性陳述? –

+0

這是最合乎邏輯的結論。不知道爲什麼你不告訴我們你正在使用什麼樣的圖像格式,沒有理由保守它的祕密。 –

+1

JPEG不使用索引顏色,因此使用InterpolationMode.NearestNeighbor防止創建新顏色不會使其壓縮得更好,反之則相反。 – Guffa