C# System.IO.File.ReadAllBytesの配列のされかたがわかりません。
C#
1// バイト列の取得 2byte[] byteimagedata = System.IO.File.ReadAllBytes(ファイル名);
で画像のバイトの配列を取得できました。
しかし、その配列の並んでいる法則がわかりません。
RGBAの順で左上のピクセルから右上まで行って、
1行下がってまた、右上まで行くという配列でしょうか?
##追記
説明不足だったので、追記します。
C#
1 2foreach (var i in byteimagedata) 3{ 4 Console.WriteLine(i); 5}
で配列を見たのですが、並んでいる法則がよくわかりませんでした。
よろしくお願いします。
圧縮されてるんじゃないでしょうか。
ご回答ありがとうございます。
圧縮とはどういうことですか?
画像ファイルは通常、サイズが圧縮されています。
説明不足だったので、追記しました。
ご教授よろしくお願いします。
ファイルサイズを小さくするためにデータをいじっているということですね。だから、ドットとデータが一対一対応していません。
例えば 0 が 100 個並んでいるとします。そのまま保存したのでは 100 バイトになります。しかし、100 0 というデータ(つまり 0 が 100 個あることを表す)なら 2 バイトで済みます。これはランレングスという圧縮法ですが、jpg や png では圧縮率を高めるためにもっと高度なアルゴリズムを使っています。
わかりました。
ファイル圧縮についてもう少し、調べてみます。
ご教授ありがとうございました。
助かりました。
圧縮されたものを自力で伸長するのは現実的ではありません。コーデックを使って伸長します。jpg や png などよく使われるもののコーデックは既に入っているので、画像として読み込んで画像処理を行うのが通常の方法です。
間違えました。今のは WPF 用です。Windows Forms はこちらを使ってください。
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.bitmap?view=netframework-4.8
回答1件
あなたの回答
tips
プレビュー