2008-09-01 1 views
3

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

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

ответ

4

Существует ряд решений.

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

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

1

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

+0

Пожалуйста, отправьте ссылку, как только вы закончите! Это звучит идеально. – 2008-10-01 22:19:58