Существует ли какая-либо клиентская технология, способная преобразовывать sRGB в CMYK через цветовой профиль ICC?

Доступна ли какая-либо технология в браузере (на стороне клиента), способная преобразовывать цвета sRGB в CMYK и наоборот с использованием указанного цветового профиля ICC?

В настоящее время я использую скрытый апплет Java для преобразований (в Java есть встроенный класс для этого), но я пытаюсь найти альтернативу, поскольку апплеты Java медленные и устаревшие.

SVG был бы идеален, если бы браузеры поддерживали цвета ICC в SVG, но ни один делает. Flash или Silverlight тоже были бы хороши, но я не могу найти ничего подходящего.


person Lea Verou    schedule 16.01.2011    source источник
comment
Я предлагаю вам придерживаться решения Java, поскольку в нем нет ничего плохого. Я не понимаю, почему вы хотите заменить его или почему вы считаете, что Flash или Silverlight будут лучше.   -  person finnw    schedule 10.10.2011
comment
Просто производительность. Все взаимодействие JavaScript и Java-апплета немного медленное, так как оно выполняется много раз в секунду, пока вы возитесь с изменением цветов.   -  person Lea Verou    schedule 12.10.2011
comment
Если узкое место заключается в передаче сообщений между JavaScript и апплетом, то я подозреваю, что замена Java на Flash или Silverlight ничего не изменит. Но если вы сейчас используете ColorSpace.fromCIEXYZ и связанные с ним методы для отдельных пикселей. Ну, это медленно. На Java есть более быстрые реализации (которые все же могут быть быстрее, чем JS или Flash).   -  person finnw    schedule 13.10.2011
comment
Нет, узким местом является передача сообщений из/в JS и апплет. Никаких манипуляций с изображением, просто преобразование цветов. Это для выбора цвета.   -  person Lea Verou    schedule 14.10.2011


Ответы (2)


Я правильно понимаю, что вы хотите использовать профиль ICC устройства отображения?

Я совершенно уверен, что нет возможности определить профиль ICC устройства отображения с помощью javascript. В лучшем случае это возможно в сторонней среде, такой как Flash. С самой математикой проблем не будет.

Конечно, на самом деле за все это отвечает веб-браузер. Firefox имеет достаточно хорошую поддержку управления цветом. Если я не ошибаюсь, Microsoft собирается заняться управлением цветом в IE9.

person Kevin A. Naudé    schedule 27.01.2011
comment
Предоставление цветового профиля для RGB через файл также допустимо. Я уже использую файл для CMYK. Мне это не нужно для полных изображений, только для определенных цветов (для выбора цвета). Flash подойдет, учитывая, что сейчас я использую скрытый апплет Java, что намного хуже. - person Lea Verou; 28.01.2011
comment
@Lea: Это может изменить ситуацию. Можете ли вы указать мне пример того, как вы на самом деле используете апплет? Код тоже в порядке. - person Kevin A. Naudé; 28.01.2011
comment
coloratum.com Это все еще немного глючит и работает медленно, так как я еще не выпустил его. Просмотр в современном браузере. - person Lea Verou; 28.01.2011
comment
Хороший аккуратный код. У меня сейчас профессиональный дедлайн, но я хотел бы рассмотреть это немного позже на этой неделе. - person Kevin A. Naudé; 31.01.2011

Прочитав ваш вопрос, я не могу решить, если:

а. вы пытаетесь выполнить операцию soft-proof, или

б. вы создаете приложение типа выбора цвета и хотите предоставить своим пользователям названия определенных цветов (например, из pantone или NCS или чего-то подобного), когда вы отображаете их приблизительные значения sRGB, или

в. что-то совсем другое.

Какое пространство CMYK вас интересует? Если вы выполняете вариант (а) — программную цветопробу — вы, вероятно, можете подогнать кривые к LUT в профиле CMYK и использовать их для определения «быстрого» преобразования, которое затем можно запустить в не-ICC-профиле. осведомленная среда выполнения javascript, в которой вы работаете. Большинство профилей CMYK выполняют преобразование с помощью LUT, и многие используют значения ICC4 NamedColor2 (которые вы можете знать как значение в тегах ICC «ncl2»).

Если это так, я могу указать вам на некоторые ресурсы о том, как это сделать - я делаю это сам, используя SciPy на платформе приложения для анализа изображений для управления цветом python django, над которой я работаю.

Если вы используете вариант (b) и вам нужны имена цветов, вы можете извлечь нужные вам имена из своего профиля CMYK (скорее всего значения NamedColor2) и создать таблицу поиска, которую затем вы можете сериализовать в JSON, чтобы вы могли загрузите его в свое приложение. Если вашему приложению необходимо иметь некоторое представление о пространстве дисплея, вы, вероятно, можете попросить пользователя «откалибровать» ваше приложение для своего дисплея — задайте им несколько вопросов, которые позволят вам вычислить смещение точки белого (и, возможно, RGB XYZ). tristimulii), а затем, возможно, создать быстрое преобразование (которое может быть таким же простым, как одно преобразование хроматической адаптации, я предполагаю), которое вы затем применяете к значениям цвета, которые хотите «управлять цветом», прежде чем отображать их.

Чтобы выполнить преобразования без системы CMS, математика Брюса Линдблума — хорошее место для начала:

http://www.brucelindbloom.com/

если это c) Мне очень любопытно, что это такое.

что-нибудь из этого полезно? Я могу уточнить и/или предоставить пример кода и т. д., если вы дополните свой вопрос (я работаю в аналогичной проблемной области, поэтому мы оба могли бы выиграть в этом).

person fish2000    schedule 08.08.2011
comment
Это для выбора цвета. Я хочу, чтобы преобразование CMYK‹->RGB было таким же, к которому большинство пользователей привыкли в Photoshop, при использовании его цветового профиля по умолчанию (который также ближе к любой печатной реальности, чем наивные алгоритмы преобразования CMYK‹->RGB, которые выполняются без цветовой профиль вообще). - person Lea Verou; 09.08.2011
comment
По умолчанию, как в US Web Coated SWOP v2? Это мое рабочее пространство CMYK по умолчанию; Я думаю, что это было по умолчанию, по крайней мере, с первого выпуска Creative Suite. Возможно, это было раньше, но я не использовал управление цветом до появления CS, поэтому не знаю. - person fish2000; 09.08.2011
comment
... Я согласен с тем, что большинство наивных функций преобразования CMYK в RGB, которые вы найдете, являются ужасно тупыми инструментами, но (рискуя показаться педантичным) печатная реальность для многих людей не обязательно SWOP ... при печати на струйной печати бумага, большинство современных струйных принтеров имеют цветовую гамму, которая намного ближе к sRGB, чем, например, веб-печать CMYK. - person fish2000; 09.08.2011
comment
... Но так, это палитра цветов, которая использует программную цветокоррекцию для преобразования значений (но не для ее отображения в целом? - person fish2000; 09.08.2011
comment
Даже на струйных принтерах я не думаю, что #0ff хоть сколько-нибудь близок, например, к голубому CMYK. Да, я имею в виду US Web Coated SWOP v2. Что касается палитры цветов, вы можете увидеть черновой вариант здесь: coloratum.com. Java-апплет. - person Lea Verou; 10.08.2011
comment
@fish2000, кажется, ты очень хорошо разбираешься в этих аргументах. Мне нужно сделать что-то подобное для системы с программной защитой, но только на основе html (5) без каких-либо java или flash-плагинов. Можете ли вы дать мне некоторые указания? - person albanx; 03.09.2013
comment
@albanx, вы хотите сказать, что ваша система должна работать на стороне клиента в браузере, например, используя только JavaScript для вычислений? ... если так, то это серьезная проблема 80/20. Вы можете легко найти алгоритмическую основу большинства матричных цветовых преобразований на основе sRGB в Интернете — например. brucelindbloom.com/ — но трудная часть программной цветопробы app будет писать синтаксический анализатор двоичного формата ICC на JavaScript. Существует множество пограничных случаев: проприетарные теги, распространенные недопустимые значения и т. д. Использование серверной среды (например, python) значительно превосходит вас. - person fish2000; 13.09.2013
comment
@fish2000 Чтобы иметь желаемый цветовой профиль на изображении, можно использовать процесс на стороне сервера для возврата изображения с этим профилем. Я знаю, что почти невозможно читать профили с javascript и анализировать их. Современные браузеры могут читать встроенные профили внутри изображения. Настоящей проблемой для меня является получение с помощью javascript реальных значений CMYK пикселя изображений. Итак, зная цветовой профиль изображения в браузере, как я могу дать Javascript правильную математическую инструкцию (возвращенную с сервера), чтобы я мог вычислить цвет пикселя в CMKY? - person albanx; 13.09.2013
comment
@fish2000 Итак, в заключение: зная (и анализируя) цветовые профили с сервера, могу ли я вывести (или найти) какой-либо математический расчет, чтобы заставить javascript возвращать информацию о реальном цвете пикселя? - person albanx; 13.09.2013
comment
@albanx Ага, да! Это не тривиально, но выполнимо. Трудная часть по-прежнему заключается в чтении исходных ICC, но метаданных должно быть достаточно для вас в 98% случаев, и подготовить ваш алгоритм (ы) для вашего конкретного моделирования среды CMYK. Но с прямым преобразованием, а не с полной реализацией программной цветопробы, ваш код преобразования может выполнять конечную работу с математическими функциями CMS (например, гамма-расщепление/компандирование, преобразования PCS, странные эталонные белые цвета и т. д.). Вам, скорее всего, понадобится правильная функция GCR в JS, чтобы получить правильные значения * и не экономить на преобразовании с плавающей запятой — ни о какой ракетостроении. Удачи! - person fish2000; 14.09.2013
comment
* вот мой собственный хак-джоб GCR: github.com /fish2000/django-instakit/blob/master/django_instakit/ — на основе этого вопроса, связанного с StackOverflow ICC: stackoverflow.com/questions/10572274/halftone-images-in-python - person fish2000; 14.09.2013