在谷歌上花了很多时间研究这个问题后,我找不到在 C# 中将 Wbmp 图像转换为 Png 格式的示例我从互联网上下载了一些 Wbmp 图像,我正在使用二进制编辑器查看它们。
有没有人有一个算法可以帮助我这样做,或者任何代码也会有所帮助。
到目前为止我知道的事情:
- 第一个字节是 type*(单色图像为 0)
- 第二个字节称为“固定头”,为 0
- 第三个字节是图像的宽度,以像素为单位*
- 第四个字节是图像的高度(以像素为单位)*
- 数据字节按行排列——每像素一位:行长度不能被 8 整除时,行被 0 填充到字节边界
我完全迷失了,所以任何帮助将不胜感激
其他一些代码:
using System.Drawing;
using System.IO;
class GetPixel
{
public static void Main(string[] args)
{
foreach ( string s in args )
{
if (File.Exists(s))
{
var image = new Bitmap(s);
Color p = image.GetPixel(0, 0);
System.Console.WriteLine("R: {0} G: {1} B: {2}", p.R, p.G, p.B);
}
}
}
}
和
class ConfigChecker
{
public static void Main()
{
string drink = "Nothing";
try
{
System.Configuration.AppSettingsReader configurationAppSettings
= new System.Configuration.AppSettingsReader();
drink = ((string)(configurationAppSettings.GetValue("Drink", typeof(string))));
}
catch ( System.Exception )
{
}
System.Console.WriteLine("Drink: " + drink);
} // Main
} // class ConfigChecker
过程 :
研究过wbmp
先打开X.wbmp查看详情
找出如何找到 WBMP 文件的宽度和高度(以便以后编写代码)。请注意,转换长度字节集合的最简单方法(一旦 MSB 被清除)是将实体视为 base-128。
查看我更新的示例代码。
我正在尝试创建一个空的 Bitmap 对象并将其宽度和高度设置为我们在 (3) 中计算的值
对于每一位数据,将尝试在创建的 Bitmap 对象上执行 SetPixel。
当 WBMP 宽度不是 8 的倍数时填充 0。
使用 Save() 方法保存位图。
应用程序的示例用法。假设应用程序名为 Wbmp2Png。在命令行中:
Wbmp2Png IMG_0001.wbmp IMG_0002.wbmp IMG_0003.wbmp
应用程序将每个 IMG_0001.wbmp、IMG_0002.wbmp 和 IMG_0003.wbmp 转换为 PNG 文件。