Применение цветового профиля ICC к изображению в C # (Dotnet) - PullRequest
3 голосов
/ 01 сентября 2008

Как преобразовать изображение из одного цветового профиля в другой (с экрана на принтер или со сканера на экран). В Visual C ++ вы бы использовали функцию в ICM.h, есть ли управляемый способ сделать это с помощью GDI +?

Мне нужно использовать GDI +, а не WPF. Я бы предпочел иметь управляемое решение, но если оно недоступно, я думаю, что PInkvoke будет достаточно.

Ответы [ 2 ]

4 голосов
/ 02 сентября 2008

Есть ряд решений.

  1. Для GDI +, см. Эту статью на MSDN .
  2. Для WPF (.NET 3.0) см. Пространство имен System.Windows.Media . Существует ряд различных классов, таких как BitmapEncoder , которые имеют концепцию ColorContext , которая «представляет Международный консорциум цветов (ICC) или Image Color Management (ICM) цветовой профиль, связанный с растровым изображением. "

Оба они кажутся довольно сложными, поэтому всегда есть возможность купить чужой код. Atalasoft DotImage Photo Pro имеет встроенные возможности настройки профиля ICC. Код дорогой; лицензия разработчика почти 2к. Но, основываясь на их участии в сообществе дотнетов, я бы дал им повод.

1 голос
/ 01 октября 2008

Вы должны взглянуть на Lcms . Это система управления цветом, довольно полная, но написанная на C. Вы можете использовать pinvoke, но я бы порекомендовал Managed C ++ wrapper. На самом деле я сейчас работаю над управляемой оболочкой для движка (только основы, преобразование цветового профиля, лабораторные показания). Я могу опубликовать ссылку на код после завершения. Это может быть неделя или около того.

...