回答
請理解,沒有免費的午餐。通過增加壓縮來減小JPEG圖像的大小也會降低圖像的質量。但是,也就是說,您可以使用Image
類來減小JPEG圖像的大小。此代碼假定inputBytes
包含原始圖像。
var jpegQuality = 50;
Image image;
using (var inputStream = new MemoryStream(inputBytes)) {
image = Image.FromStream(inputStream);
var jpegEncoder = ImageCodecInfo.GetImageDecoders()
.First(c => c.FormatID == ImageFormat.Jpeg.Guid);
var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, jpegQuality);
Byte[] outputBytes;
using (var outputStream = new MemoryStream()) {
image.Save(outputStream, jpegEncoder, encoderParameters);
outputBytes = outputStream.ToArray();
}
}
現在outputBytes
包含使用不同JPEG質量的圖像的再壓縮版本。
通過減少jpegQuality
(應該在0-100範圍內),您可以增加壓縮但降低圖像質量。有關更多信息,請參閱Encoder.Quality
字段。
下面是一個例子,您可以看到jpegQuality
如何影響圖像質量。這是使用20,50和80作爲jpegQuality
的值壓縮的相同照片。尺寸是4.99,8.28和12.9 KB。
注意如何文本變得「污跡」,即使質量高。這就是爲什麼您應該避免對具有統一顏色區域的圖像(計算機上創建的圖像/圖表/圖表)使用JPEG。改用PNG。對於照片,如果不降低質量,JPEG非常適合。
GDI +中發生了一般性錯誤。 :( 在這一行:'image.Save(memoryStream,jpegEncoder,encoderParameters);' – 2012-02-24 15:30:58
@MehmetBudak:對不起,修正了代碼('Image'類是「lazy」,儘可能晚地訪問圖像字節以前,我把輸入緩衝區過早地處理了。) – 2012-02-24 15:50:08
你剛剛成爲我的國家的英雄!謝謝先生!!!;) – 2012-02-24 16:35:14
字節數組的大小總是可以減小,但是會丟失有關圖像的數據。您可以降低jpeg的質量,然後將字節數組佔用更少的數據。
將JPEG字節看作是大量字節的壓縮表示。 所以如果你嘗試應用一些函數來減少字節數就好像試圖壓縮已經壓縮的東西。
- 1. 減小ITextPDF中的圖像大小(字節數)
- 2. 用Cocoa減少圖像字節大小
- 3. PowerShell - 減小圖像大小
- 4. 減小圖像的大小和與Java
- 5. 減小java中圖像的大小
- 6. 縮小按鈕的大小減少了圖像的大小,而不是減小大小
- 7. 是否可以通過減小尺寸來縮小JPEG圖像的文件大小?
- 8. 是否有函數來知道視圖的可用大小?
- 9. 調整大小後圖像的文件大小沒有減少
- 10. BufferedImage字節數組大小
- 11. Gdiplus ::來自字節數組的圖像
- 12. Laravel - 減小數組的大小
- 13. 減小數組列表的大小
- 14. 調整圖像大小的字節[]
- 15. 得到字節的圖像大小
- 16. Bootstrap - 是否可以根據列大小調整圖像大小?
- 17. 減少uclinux圖像大小
- 18. 將圖像調整爲字節數組的大小
- 19. 是否可以將字節數組/位圖壓縮到特定大小?
- 20. 爲了減少字節數組的大小到其原來的一半
- 21. 是否可以使用Paperclip將圖像的大小(字節)壓縮到特定大小?
- 22. java圖像壓縮和減少字節大小
- 23. 壓縮圖像的可能性(大小)
- 24. 固定大小的字節數組
- 25. Alllocate正確的字節數組大小
- 26. 是否有可能使用CSS縮小文本自動適合div的大小
- 27. 是否有可能改變圖像的alt屬性的大小CSS
- 28. 減小igraph中的自環的大小
- 29. Numpy:是否有數組大小限制?
- 30. serialize uid數字是否增加要發送的字節數組的大小?
你是什麼意思?數組一旦創建就有固定的大小,但您是否在談論圖像壓縮?降低質量?減少圖像大小?請澄清。 – 2012-02-24 13:26:57
把它像披薩一樣切片並吃掉。抱歉的字節數組讓我想起比薩餅。尤其是循環緩衝區 – mauris 2012-02-24 13:28:14