Googleでこれについて多くの時間を費やした後、C#でWbmpイメージをPng形式に変換する例に出くわすことができませんでした.インターネットからいくつかのWbmpイメージをダウンロードし、バイナリエディタを使用してそれらを表示しています.
そうするのに役立つアルゴリズムを持っている人はいますか、それともコードも役立ちます。
私がこれまでに知っていること:
- 最初のバイトは type* (モノクロ画像の場合は 0)
- 2番目のバイトは「固定ヘッダー」と呼ばれ、0です
- 3 バイト目は画像の幅 (ピクセル単位)*
- 4 番目のバイトは、ピクセル単位の画像の高さです*
- 行に配置されたデータ バイト - ピクセルあたり 1 ビット: 行の長さが 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 ファイルに変換します。