2012-11-22 150 views
0

我得到一個圖像截圖作爲一個字節數組。如何將此圖像轉換爲較低位圖像以減小尺寸?整個圖像只有10種顏色,所以我認爲必須有一些解決方法才能做到這一點。任何提示?減少圖像文件大小

回答

1

您可以將其保存爲調色圖像文件。假設您的圖像保存在Bitmap類型的變量bmp中。 mStreamMemoryStream在這種情況下,這樣你就可以將其存儲在內存中:

bmp.Save(mStream, Imaging.ImageFormat.Gif) 
bmp.Dispose 

GIF格式支持各種尺寸的面板上,以256個色,因爲它使用位平面而不是RGB-緩衝區。在你的情況下,它可能會被保存爲16色文件。 GIF使用LZW壓縮,因此生成的文件大小通常較小。

還有PNG-8格式,它與GIF大致相同。

要調用初始化位圖:

mStream.Seek(0, SeekOrigin.Begin) 
Dim bmp As Bitmap = Bitmap.FromStream(mStream) 
... 
bmp.Dispose 

可惜你不能創建一個圖形與索引位圖對象 - 否則邏輯的做法是將數據從屏幕拷貝到像素格式PixelFormat.Format4bppIndexed的位圖。

但是,以索引格式在位圖上創建圖形會引發異常 - 基本上,您需要手動轉換和複製數據。因此,如果圖像不經常需要,我在這個答案中的建議可能會更方便。