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

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

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


person Kris Erickson    schedule 01.09.2008    source источник


Ответы (2)


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

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

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

person Community    schedule 01.09.2008
comment
Ссылка MSDN мертва - person Charles Milette; 17.02.2020

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

person mattlant    schedule 01.10.2008
comment
Пожалуйста, пришлите ссылку, как только закончите! Это звучит идеально. - person Kris Erickson; 02.10.2008
comment
Mattlant, Вы когда-нибудь доделывали управляемую обертку для lcms. Если да, не могли бы выложить куда-нибудь? Спасибо. - person Cshah; 22.07.2011