Измените значения HSL растрового изображения, используя C#
Я хотел бы знать, как я могу изменить значения HSL растрового изображения с помощью C#. Должна быть возможность загружать растровое изображение и изменять его значения HSL для каждого пикселя.
2 ответа
Вам нужно будет просмотреть RGB каждого пикселя, преобразовать его в HSL, изменить значения HSL, преобразовать обратно в RGB и записать новые данные пикселей в растровое изображение. К сожалению, System.Drawing не имеет встроенной функциональности HSL в RGB (хотя RGB и HSL существует).
Ознакомьтесь со следующей статьей проекта кода для класса, который может выполнять двусторонние преобразования RGB / HSL: http://www.codeproject.com/KB/recipes/colorspace1.aspx
Вы можете использовать LockBits на вашем Bitmap, который даст вам объект BitmapData.
С BitmapData вы можете:
- Используйте "небезопасные" блоки кода для итерации по каждому пикселю и изменения значения.
- Используйте Marshal.Copy, чтобы скопировать пиксели в массив, изменить значения в массиве, а затем скопировать его обратно в источник растрового изображения.
Подробное объяснение этой темы можно найти здесь.
Вот статья о RGB -> HSL, которая может оказаться вам полезной.