【发布时间】:2012-11-22 03:58:05
【问题描述】:
我得到一个字节数组形式的图像截图。如何将此图像转换为低位图像以减小尺寸?整个图像中只有 10 种颜色,所以我认为必须有一些解决方法来做到这一点。有什么提示吗?
【问题讨论】:
标签: .net vb.net visual-studio-2010
我得到一个字节数组形式的图像截图。如何将此图像转换为低位图像以减小尺寸?整个图像中只有 10 种颜色,所以我认为必须有一些解决方法来做到这一点。有什么提示吗?
【问题讨论】:
标签: .net vb.net visual-studio-2010
您可以将其保存为调色板图像文件。假设您的图像保存在Bitmap 类型的变量bmp 中。 mStream 在这种情况下是 MemoryStream,因此您可以将其存储在内存中:
bmp.Save(mStream, Imaging.ImageFormat.Gif)
bmp.Dispose
gif 格式支持多达 256 种颜色的各种调色板,因为它使用 位平面 而不是 RGB 缓冲区。在您的情况下,它可能会保存为 16 色文件。 GIF 使用 LZW 压缩,因此生成的文件往往较小。
还有与 GIF 大致相同的 PNG-8 格式。
调用初始化位图:
mStream.Seek(0, SeekOrigin.Begin)
Dim bmp As Bitmap = Bitmap.FromStream(mStream)
...
bmp.Dispose
不幸的是,您不能创建带有索引位图的 Graphics 对象 - 否则逻辑方法是将数据从屏幕复制到像素格式的位图中 PixelFormat.Format4bppIndexed。
但是,以索引格式在位图上创建图形会引发异常 - 基本上您需要手动转换和复制数据。因此,如果不经常需要图像,我在此答案中的建议可能会更方便。
【讨论】: