Измените значения 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 вы можете:

  1. Используйте "небезопасные" блоки кода для итерации по каждому пикселю и изменения значения.
  2. Используйте Marshal.Copy, чтобы скопировать пиксели в массив, изменить значения в массиве, а затем скопировать его обратно в источник растрового изображения.

Подробное объяснение этой темы можно найти здесь.

Вот статья о RGB -> HSL, которая может оказаться вам полезной.

Другие вопросы по тегам