Просмотр полной версии : Подгрузка изображений в CMYK формате
alekslitvinenk
14.05.2008, 20:36
Всем регардсы !
Собственно вопрос: пользователь загружает во флеш изображения, некоторые из них имеют цветовое пространство CMYK. Так как CMYK не поддерживается флешем, то эти картинки отображаются как попало. Можно ли как-нибудь средствами флеша определить какое цветовое пространство имеет данное изображение и преобразовать его в изображение с другим цветовым пространством ?
Или, если можете, подскажите плз с помощью какой серверной технологии этого лучше всего добится ? Суть проблемы в том, что нужно преобразовывать не все входящие изображения, а лишь те, которые в CMYK цветах...
terbooter
14.05.2008, 22:47
А дайте ссылку на картинку с CMYK цветом ?!!
Еще интересно какой технологии у вас монитор который отображает
в CMYK-е?
-)
Зря смеешься =) JPEG может быть в CMYK.
alekslitvinenk
14.05.2008, 23:09
картинка в CMYK-е:
ЗЫ:у мну монитор самый обыкновенный, а у вас ? :mosking:
Может, кто-нибудь знает готовый компонент(можно даже платный) для работы с CMYK изображениями во флеше?
картинка в CMYK-е:
ЗЫ:у мну монитор самый обыкновенный, а у вас ? :mosking:
А в оригинале картинка как выглядит?
alekslitvinenk
14.05.2008, 23:53
Это и есть картинка в оригинале, а вот такой она становится после подгрузки в приложение:
Был плагин к акробату, у нас в газете пользовались, он мог конвертировать на автопилоте картинки... но я даж уже не помю, как назывался + конвертация отвратного качества получалась, лучше было руками делать... А с CMYK ты просто умаешься... там ведь еще профайлы и настроек куча, типа максимального количества черного, максимального общего количества краски и т.д... боюсь, что автоматом конвертировать не получится, разве что какой-нибудь скрин капчурер настроить, чтобы скриншоты делал, но, все-равно, качество сильно пострадает... легче заказчика научить фотошопом пользоваться - дешевле выйдет =)
alekslitvinenk
15.05.2008, 01:31
Сам алгоритм преобразования довольно нехитрый:
function cmyk_to_rgb(c:int, m:int, y:int, k:int):Object
{
var r:int = 255 - Math.round(2.55 * (c+k)) ;
var g:int = 255 - Math.round(2.55 * (m+k)) ;
var b:int = 255 - Math.round(2.55 * (y+k)) ;
if(r<0) r = 0 ;
if(g<0) g = 0 ;
if(b<0) b = 0 ;
var o:Object = new Object();
o.r = r ;
o.g = g ;
o.b = b ;
return o ;
}
Результирующее качество удовлетворительное.
Вопрос: как распарсить ByteArray картинки, чтобы получить доступ к матрице...
К какой матрице? Загрузите картинку, получите Bitmap, а у него bitmapData и делайте с ней, что хотите.
Только вот, для использования функции, вам надо сначала получить эти самые c, m, y, k на входе.
alekslitvinenk
15.05.2008, 19:36
Все это верно для обычных картинок, если грузить в CMYK то и BitmapData у нее получается искаженной.
Угу, вчера уже пробовал, думал можно будет как-то по каналам скопировать, а потом слить в одну, но нет... голубой просто теряется, а логику искажения остальных я так и не понял...
А парсить JPEG по байтам... это, ну как бы почитав доки, мне показалось, что задача не просто нетривиальная, а, как минимум на диссертацию потянет %) так что боюсь, что флешем пока никак...
Да, кстати, а чем наш форум превьюшки генерит для картинок в аттачменте? :rolleyes:
alekslitvinenk
15.05.2008, 19:53
Да, кстати, а чем наш форум превьюшки генерит для картинок в аттачменте?
Наверняка функциями из gd библиотеки для php
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.