2

JPG画像を(double)2D配列に変換しようとしています。使用:

Image image = Image.FromFile("image.jpg");

500 x 500の画像を取得します(image.Size.Height(Width)による)。しかし、これを使用してバイト配列に変換しようとすると

byte[] arr;
using (MemoryStream ms = new MemoryStream())
{
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    arr = ms.ToArray();
}

arr.GetLength(0)=35640500 * 500=250000よりも小さいが得られます。arrその後、1D配列を2D配列に変換します。私は何かが足りないのですか?

4

2 に答える 2

2

ピクセル表現を保存していません..JPEGファイルのバイトを保存しています。実際のピクセルが必要な場合は、ピクセルをループする必要があります。

また、各ピクセルには、赤、緑、青の最低 3 つのコンポーネントがあることに注意してください。

于 2012-07-12T22:51:27.587 に答える
1

画像をJPEG形式で保存すると、ストリームに書き込まれるピクセルが圧縮されます。

画像のピクセルを操作したい場合は、おそらく画像をビットマップにロードしてから、Bitmap.LockBitsを呼び出してメモリ内の生のピクセルを取得する必要があります。

于 2012-07-12T22:50:33.743 に答える