Применение цветового профиля ICC к изображению в C # (Dotnet)

StackOverflow https://stackoverflow.com/questions/38295

Вопрос

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

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

Это было полезно?

Решение

Есть несколько решений. <Ол>

  • Для GDI + ознакомьтесь с этой статьей в MSDN .
  • Для WPF (.NET 3.0) см. Пространство имен System.Windows.Media . Существует ряд различных классов, таких как BitmapEncoder , который имеет концепцию ColorContext , который " представляет цветовой профиль Международного цветового консорциума (ICC) или Image Color Management (ICM), связанный с растровым изображением. & Quot;
  • Оба они кажутся довольно сложными, поэтому всегда есть возможность купить чужой код. DotImage Photo Pro Atalasoft имеет встроенные возможности настройки профиля ICC. Код дорогой; лицензия разработчика почти 2к. Но, основываясь на их участии в сообществе дотнетов, я бы обнял их.

    Другие советы

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top