减少图像文件大小

时间:2012-11-22 03:58:06

标签: .net vb.net visual-studio-2010

我将图片截图作为字节数组。如何将此图像转换为较低位图像以减小尺寸?整个图像中只有10种颜色,所以我认为必须有一些解决方法才能做到这一点。任何提示?

1 个答案:

答案 0 :(得分:1)

您可以将其另存为调色图像文件。假设您的图片保存在bmp类型的变量Bitmap中。在这种情况下,mStreamMemoryStream,因此您可以将其存储在内存中:

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

gif格式支持各种调色板大小,最多256种颜色,因为它使用 bitplanes 而不是RGB缓冲区。在您的情况下,它可能会保存为16色文件。 GIF使用LZW压缩,因此生成的文件的大小往往很小。

还有PNG-8格式与GIF大致相同。

要调用使用以下内容初始化位图

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

不幸的是,您无法使用索引位图创建Graphics对象 - 否则逻辑方法是将数据从屏幕复制到像素格式PixelFormat.Format4bppIndexed的位图。

但是,以索引格式在位图上创建图形会引发异常 - 基本上您需要手动转换和复制数据。因此,如果不经常需要图像,我在这个答案中的建议可能会更方便。