на первый взгляд, я могу прочитать BMP в 2-й зубчатый массив. Однако, когда я пытаюсь передать массив 2d с зубчатыми краями обратно в файл System.Drawing.Image, я получаю сообщение об ошибке «Параметр не действителен»
Некоторые предпосылки: я помню время, когда можно было печатать и читать пиксели и из формы, отображаемой на экране, я хочу использовать для этой цели 2-мерный массив.
По сути, я хочу использовать массив Jagged для распознавания текста, но смогу визуально увидеть, что алгоритм читает мой код:
Void loadimage()
{
string filepath3 = “C:\\Imagepath\\1.bmp";
FileStream ifsImages3 = new FileStream(filepath3, FileMode.Open); // test images
BinaryReader brImages3 = new BinaryReader(ifsImages3);
byte[][] pixels = new byte[28][];
for (int i = 0; i < pixels.Length; ++i)
{
pixels[i] = new byte[28];
}
for (int di = 0; di < 10; ++di)
{
for (int i = 0; i < 28; ++I)
{
for (int j = 0; j < 28; ++j)
{
byte b = brImages3.ReadByte();
pixels[i][j] = b;
}
}
//##################################
MyImageTools MIT = new MyImageTools();
System.Drawing.Image imjagged = MIT.GetImageFromByteJaggedArray(pixels);
MyBitmapImage MBI = new MyBitmapImage();
mwin.imgShowMe.Source = MBI.GetImageSource(imjagged);
string stopper = "xx";
//##################################
}
public Image GetImageFromByteJaggedArray(byte[][] imagearray)
{
//byte[][] doubleArray = imagearray;
byte[][] doubleArray = new byte[28][];
for (int uj = 0; uj < imagearray.Length; uj++)
{
doubleArray[uj] = new byte[28];
imagearray[uj].CopyTo(doubleArray[uj], 0);
}
byte[] singleArray = doubleArray.SelectMany(x => x).ToArray();
MemoryStream ms = new MemoryStream(singleArray);
System.Drawing.Image im = Image.FromStream(ms);
return im;
}