В общем пока так, stride действительно играет большое значение, но stride это свойство BitmapData, а не Bitmap, с которым я работаю. Нашел еще в интернете функцию для его получения. Вообще картинка - тестовый пример, в реальности не будет никакой входной картинки, а будет только массив структур RGB, поэтому нужно как-то самому считать этот stride.
>>3925532
Чтобы использовать его в дальнейшем для создания картинки, это скоростной способ создания картинки, другой метод был бы намного более медленным.
>>3925563
Поправил.
>>3925670
Но это C# же.
public Bitmap Create()
{
Bitmap mBitmap = new Bitmap("13049902035631.bmp");
int width = mBitmap.Width;
int height = mBitmap.Height;
byte[] array = new byte[width * height * 3];
int index = 0;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
array[index++] = mBitmap.GetPixel(i,j).B;
array[index++] = mBitmap.GetPixel(i, j).G;
array[index++] = mBitmap.GetPixel(i, i).R;
}
}
Bitmap bitmap;
GCHandle BitsHandle = GCHandle.Alloc(array, GCHandleType.Pinned);
bitmap = new Bitmap(width, height, GetStride(width,mBitmap.PixelFormat), PixelFormat.Format24bppRgb, BitsHandle.AddrOfPinnedObject());
BitsHandle.Free();
bitmap.Save("output.bmp");
return bitmap;
}
public static int GetStride(int width, PixelFormat format)
{
//int bitsPerPixel = ((int)format & 0xff00) >> 8;
int bitsPerPixel = System.Drawing.Image.GetPixelFormatSize(format);
int bytesPerPixel = (bitsPerPixel + 7) / 8;
return 4 * ((width * bytesPerPixel + 3) / 4);
}