Как добавить текст к изображениям с помощью цветового пространства CMYK в .NET 4
Вопрос
Я работаю над проектом, который по своей сути включает добавление текста к изображению, поэтому в качестве примера приведено фоновое изображение (B) и некоторый текст указанным шрифтом, размером точки и шрифтом (A), которые объединяются вместе для получения (C):
Конечным результатом является переход к печати с этими изображениями, поэтому для фона используется цветовое пространство CMYK, и мне нужно сохранить весь процесс в рамках CMYK, иначе цвета при печати будут выглядеть неправильно.(примечание: превосходно статья о цветовых пространствах и .NET в CodeProject)
Я попробовал несколько различных способов скомпоновать эти изображения вместе:
- Система.Рисование неявно преобразует все в RGB
- Система.Windows.Медиафайлы.Визуализация - без методов компоновки
- System.XAML/WPF - очень многообещающий, однако RenderTargetBitmap не работает в пиксельных форматах.Cmyk32 (выдает исключение ArgumentException).
Я рассматривал, но не пробовал сторонние коммерческие компоненты, поскольку цены, похоже, начинаются с высоких и продолжают расти:
- Графическая Мельница (~ 1800 долларов США по состоянию на 12/2010)
- Atalasoft дорисовка (~ 3300 долларов США по состоянию на 12/2010)
Возможно ли это в .NET 4?
Редактировать:
Потому что кто-то другой может захотеть сделать что-то немного другое и просто преобразовать любой формат, который Windows.System.Media.Imaging
способен загружаться в CMYK вот код, который я использовал:
var bitmapConverter = new FormatConvertedBitmap();
bitmapConverter.BeginInit();
bitmapConverter.Source = sourceImage;
bitmapConverter.DestinationFormat = PixelFormats.Cmyk32;
bitmapConverter.EndInit();
Чтобы пояснить, приведенный выше код преобразует исходный код изображения в CMYK32 (без прозрачности), однако, если вы используете определенные классы (а именно RenderTargetBitmap
передача вышеупомянутого ImageSource вызовет исключение).
Решение
Если вы много читали на SO, то, вероятно, уже видели эти ссылки.Но, на всякий случай, вот несколько ссылок, которые я нашел и которые могут быть вам полезны.
Вот ссылка отсюда на SO о работе с CMYK в .NET:
Преобразовать цвет RGB в CMYK?
В частности, в нем упоминается использование Цветовых профилей и API-интерфейсы управления цветом Windows.
Вот еще одна ссылка SO:
Как программно преобразовать CMYK в RGB в indesign
Один из ответчиков упоминает, что между CMYK и RGB нет точного преобразования.
Вот ссылка о скомпоновании двух изображений CMYK без преобразования в RGB:
Есть какая-нибудь графическая библиотека CMYK?
Ответчик предлагает использовать коммерческий продукт, с которым он связан.