我需要将从文件加载的 PNG 图像转换为另一个设备使用的每像素 8 位字节数组(嵌入式编程)。
我正在逐像素复制到使用 16 位颜色创建的新图像中 -Format16bppRgb565
, 但是我需要Format8bpp
,.NET Framework 中不存在。 (我不能使用Format8bppIndexed
因为其他设备无法处理索引位图)
Bitmap img = new Bitmap(imgPath);
Bitmap img8 = new Bitmap(imgW, imgH, PixelFormat.Format16bppRgb565);
for (int I = 0; I <= img.Width - 1; I++) {
for (int J = 0; J <= img.Height - 1; J++) {
img8.SetPixel(I, J, img.GetPixel(I, J));
}
}
那么如何将图像转换为每像素 8 位的字节数组呢?
- 我可以使用 8 位索引格式并提取字节吗? -
Format8bppIndexed
- 我可以通过将 32 位颜色 R、G、B 值减少到 8 位来计算像素颜色吗?
- 是否有 C# 库可以执行此操作?
- “最简单的方法是创建一个新的 8 位位图,并在其上绘制 24 位图像。” - 如何?
虽然我不确定如何使用普通的 C# 来做到这一点,但你可以使用免费图像项目转换图像格式的库:
FreeImage 是一个开源库
适合想要的开发人员的项目
支持流行的图形图像
PNG、BMP、JPEG、TIFF 等格式
当今多媒体所需的其他内容
应用程序。 FreeImage 很容易
使用,快速,多线程安全,
与所有 32 位版本兼容
Windows 和跨平台(工作
适用于 Linux 和 Mac OS X)。
它是用 C++ 编写的,但有可供您使用的优秀 .NET 包装器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)