前提・実現したいこと
OS:winodows10
C# windowsForm2進数を画像変換し表示したい。
test.pngをローカル上に配置したあとにWindows PowerShellで以下を実行すると、ローカルに2進数データが保存されます。
Windows PowerShell
shell
1> Get-Content -path C:\test.png -Encoding Byte | foreach { [convert]::toint32([convert]: 2:tostring($_,2)).tostring("00000000")} | Out-File -FilePath C:\Work\hozon.txt
hozon.txtの中身
00001111
10101111
11111101
11110001
・
・
こういったものが羅列したテキストが保存されます。
次にこちらを画像に変換したいのですが、いろいろ調べているのですがなかなか方法が見つけれないです。
試したこと
いくつかのアプローチを考えました。
①コマンドプロンプトの-Encordingの-Decodingのバージョンのコマンド。(なかなか方法見つからず。あれば一発でできそう。)
②C#で以下コードいくつか試すもbyte配列から変換ではなくあくまで2進数を変換したいだけなので少し違いました。
該当のソースコード
C#
1 private void button2_Click(object sender, EventArgs e) 2 { 3 4 System.Drawing.Image img = System.Drawing.Image.FromFile(@"C:\test.png"); ; 5 6 byte[] byte_image = ImageToByteArray(img); 7 8 // ローカルファイルの場合 9 Bitmap bitmap = new Bitmap("C:\test.png"); 10 11 12 int w = bitmap.Width,h = bitmap.Height; 13 for (int x = 0; x < w; x++) 14 { 15 for (int y = 0; y < h; y++) 16 { 17 Color pixel = bitmap.GetPixel(x, y); 18 // ARGB 19 byte R = pixel.R; // A,G,Bも同様 20 // HSB 21 float H = pixel.GetHue(), 22 s = pixel.GetSaturation(), 23 b = pixel.GetBrightness(); 24 // SetPixelで書き込み 25 } 26 } 27 } 28 29 // Imageオブジェクトをバイト配列に変換 30 private byte[] ImageToByteArray(Image img) 31 { 32 ImageConverter imgconv = new ImageConverter(); 33 byte[] b = (byte[])imgconv.ConvertTo(img, typeof(byte[])); 34 return b; 35 } 36 37 // バイト配列をImageオブジェクトに変換 38 public static Image ByteArrayToImage(byte[] b) 39 { 40 ImageConverter imgconv = new ImageConverter(); 41 Image img = (Image)imgconv.ConvertFrom(b); 42 return img; 43 }
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017
すいません何かお気づきの点やアドバイスご助言よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/09 01:50