Я написал функцию:
public static byte[, ,] Bitmap2Byte(Bitmap image)
{
int h = image.Height;
int w = image.Width;
byte[, ,] result= new byte[w, h, 3];
for (int i = 0; i < w; i++)
{
for (int j = 0; j < h; j++)
{
Color c= image.GetPixel(i, j);
result[i, j, 0] = c.R;
result[i, j, 1] = c.G;
result[i, j, 2] = c.B;
}
}
return result;
}
Но преобразование изображения 1800x1800 занимает почти 6 секунд.Могу ли я сделать это быстрее?
РЕДАКТИРОВАТЬ:
ОК, я нашел это: http://msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.aspx
Есть хороший пример.Единственный вопрос, который у меня есть, касается Marshal.Copy
.Можно ли заставить его копировать данные непосредственно в byte[,,]
?
РЕДАКТИРОВАТЬ 2: ОК, иногда я получаю странные значения пикселей, и они, кажется, не следуютправило g1 b1.Почему? Неважно.Разобрался.
РЕДАКТИРОВАТЬ 3: Сделано.0,13 с против 5,35 с:)