Comments 15
Вот ссылочка, там как раз есть несколько вариантов преобразования изображения в черно-белое: www.switchonthecode.com/tutorials/csharp-tutorial-convert-a-color-image-to-grayscale
0
У меня преобразование картинки в ее собственный альфа-канал (т.е. картинка становится однотонной, а изображение переносится в канал прозрачности) с использованием матрицы заняло в пять раз больше времени, чем с использованием unsafe.
0
Сепия:
new float[][] {
new float[] {0.393f, 0.349f, 0.272f, 0, 0},
new float[] {0.769f, 0.686f, 0.534f, 0, 0},
new float[] {0.189f, 0.168f, 0.131f, 0, 0},
new float[] { 0, 0, 0, 1, 0},
new float[] { 0, 0, 0, 0, 1}
}
+1
Мои 5 копеек:
arsolog.habrahabr.ru/blog/59518/
arsolog.habrahabr.ru/blog/59518/
0
g.DrawImage страшно медленная штука (как и весь GDI+) — это вам любой профайлер скажет.
Я когда-то отказался от её использования и перешел на старый и проверенный BitBlt из GDI, получив ускорение в несколько раз. Причем, самой долгой операцией стало получение SafeHandle на HDC. Не знаю почему, кстати.
Я когда-то отказался от её использования и перешел на старый и проверенный BitBlt из GDI, получив ускорение в несколько раз. Причем, самой долгой операцией стало получение SafeHandle на HDC. Не знаю почему, кстати.
+2
Всё-таки я бы назвал эту (и предыдущую) статью «Быстрая манипуляция c цветом ...». А то ведь еще есть всякие Graphics.Transform, просто Matrix и пр.
0
Еще одна хорошая статья по теме: «Color Transformations and the Color Matrix».
0
спасибо, интересно.
а кто-нибудь знает как быстро посчитать гистограмму? есть ли способ без полного обхода картинки через GetPixel?
а кто-нибудь знает как быстро посчитать гистограмму? есть ли способ без полного обхода картинки через GetPixel?
0
Измерять время выполнения кода лучше при помощи класса System.Diagnostics.Stopwatch — он для этого и создан.
0
Ну вы бы хоть вкратце написали, что это за матрица и на что влияет, почему там надо такие числа задавать и прочее.
0
Sign up to leave a comment.
Быстрая манипуляция с System.Drawing.Bitmap