Поворот изображения на 90 градусов в C#

    Эта публикация является продолжением более ранней публикации о преобразовании цветной картинки в чёрно-белую, в которой показан пример хитро-мудрого, но зато очень быстрого, преобразования изображения.
    Здесь я приведу функцию поворота изображения на 90 градусов, но не отображения pictureBox под определённым углом, а именно трансформации изображения при котором на входе имеем одно изображение а на выходе абсолютно другое идентичное первому — но повёрнутое на 90 градусов.
    В функции используется тот же принцип что и в предыдущей публикации (изменяем область памяти где содержится картинка). За счёт этого скорость работы этой функции довольно высокая.
Читать дальше →

Быстрое преобразование цветного изображения в чёрно белое на C#

    Возможно есть много методов преобразования цветного изображения в чёрно белое, и возможно даже более совершенных, но на данный момент представленный ниже метод, является самым быстрым, среди известных мне.
    Преобразование (у меня на компьютере) изображения размером 2,3-2,5 Mb (2560x1920) занимает в среднем 0,3 секунды. На мой взгляд и для моих целей неплохой результат.
    Суть метода заключается не в работе с самой картинкой а в работе с блоком данных, если очень просто — то замораживаем область данных с картинкой в памяти — изменяем её как нам надо, и возвращаем всё на круги своя.
Читать дальше →

Вырезаем прямоугольную область изображения в C#

Недавно пришлось сделать простенькую подгонялку фотографий в заданные рамки, так чтобы пользователь мог собственноручно выбрать область на фото источнике и вырезать её. Впринципе ничего сложного, самое сложное пожалуй — это отрисовка прямоугольника выделения, когда нажали на кнопку мыши и перемещаем её по изображению — выделяя необходимую нам область.

Сначала самое важное. У картинки pictureBox сразу включаем свойство SizeMode в AutoSize, ни в коем случае ни какие нибудь там Zoom-ы если конечно нет желания поразбираться с масштабированием.

Читать дальше →

Как правильно открывать картинки в C#

Вроде бы нет ничего проще открытия картинки с диска в C#. А нет, И тут есть свои грабли!

Здесь просто приведу два примера.

Первый способ (неправильный):
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
     Image img = Image.FromFile(openFileDialog1.FileName);
     pictureBox1.Image = img;
}

Читать дальше →