Как оптимизировать преобразование Bitmap в int[]? [дубликат] ⇐ C#
-
Anonymous
Как оптимизировать преобразование Bitmap в int[]? [дубликат]
Мне нужно извлечь данные о цвете из растрового изображения в четыре целочисленных массива (3 для цветов и один для оттенков серого), используя это (original — это System.Drawing.Bitmap ):
for (int x = 0; x < original.Width; x++) for (int y = 0; y < original.Height; y++) { int r = original.GetPixel(x, y).R; int g = original.GetPixel(x, y).G; int b = original.GetPixel(x, y).B; int k = (int)(r * .3 + g * .59 + b * .11); К[х,у] = г; Р[х,у] = г; Г[х,у] = г; В[х,у] = б; } но это слишком медленно. Как я могу его оптимизировать?
Я знаю, что использование Bitmap.LockBits() и UnlockBits() быстрее, но все, что я нашел, использует указатели и небезопасный код, и я не хочу об этом говорить используйте это.
Мне нужно извлечь данные о цвете из растрового изображения в четыре целочисленных массива (3 для цветов и один для оттенков серого), используя это (original — это System.Drawing.Bitmap ):
for (int x = 0; x < original.Width; x++) for (int y = 0; y < original.Height; y++) { int r = original.GetPixel(x, y).R; int g = original.GetPixel(x, y).G; int b = original.GetPixel(x, y).B; int k = (int)(r * .3 + g * .59 + b * .11); К[х,у] = г; Р[х,у] = г; Г[х,у] = г; В[х,у] = б; } но это слишком медленно. Как я могу его оптимизировать?
Я знаю, что использование Bitmap.LockBits() и UnlockBits() быстрее, но все, что я нашел, использует указатели и небезопасный код, и я не хочу об этом говорить используйте это.
Мобильная версия