C # Изображение в байтовый массив неверная ошибка - PullRequest
0 голосов
/ 27 июня 2018

вот мой код:

Image img;
int height = 0;
int weight = 0;
int size = 0;
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK) // Test result.
{
    try
    {
        img = Image.FromFile(openFileDialog1.FileName);
        ccdImageAnalyzer1.Image = img;
        byte[] image = imageToByteArray(img);
         height = img.Height;
        weight = img.Width;
        size = height * weight;
    }
    catch( Exception err)
    {
        MessageBox.Show(err.ToString());
    }
}
MessageBox.Show(result.ToString());

проблема в том, что я получаю:

256 для высоты и 256 для ширины

и размер 65536

однако, мое изображение байтового массива имеет размер {байт [262198]} в длину.

как это?

пикселей от 0 до 255, а 255 - это 1111 1111, и это один байт, поэтому длина массива должна быть всего 65536 ...

так что же происходит?

public byte[] imageToByteArray(Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
    return ms.ToArray();
}

Я использую картинку .Bmp

65536 * 4 = 262198

так это 4 байта на один пиксель?

Кроме того, если это так, то пиксель img (0,0) = изображение [0], изображение [1], изображение [2], изображение [3]?

если так,

я должен преобразовать его в int? чтобы я мог получить число 255?

Я сохранил белую картинку в рисовании как a, bmp, и я запустил свою программу, и каким-то образом я получил не 0 значений в массиве изображений?

как это? Я даже видел 255 но белый - 0.

Я просто сохраняю белую картинку.

массив должен быть полностью нулевым

...