Вход

Просмотр полной версии : низкое качество градиентной заливки


mr.daBUTCH
04.09.2006, 10:17
с помощью beginGradientFill залил прямоугольник, однако, качество такой заливки неудовлетворительно, несмотря на best-качество визуализации (_quality = "BEST";). На картинке показаны виды заливки в фотошоп и полученный результат на Flash. Результаты для наглядности увеличены на 200%. как-то можно это побороть или единственный вариант вставлять растровый фон ?

wvxvw
04.09.2006, 11:28
Флеш использует меньшее количество цветов для визуализации, побороть это средствами флеш нельзя.

iNils
04.09.2006, 12:03
Запустите swf и скажите где битмап, а градиент созданный с помощью ас? Разница не значительная.

etc
04.09.2006, 13:58
iNils, речь идёт о переходах между близкими цветами

iNils
04.09.2006, 14:16
iNils, речь идёт о переходах между близкими цветамиНу и что, есть небольшие отличии в распределении цветов, но при чем тут качество?

wvxvw
04.09.2006, 14:28
2 iNils:
Флеш использует только т.н Websafe палитру, это меньше цветов, чем возможности экрана - отсюда и разница.

etc
04.09.2006, 14:29
2 iNils:
Флеш использует только т.н Websafe палитру, это меньше цветов, чем возможности экрана - отсюда и разница.
Что, 216 цветов?

wvxvw
04.09.2006, 14:32
нет, от 0х000000 до 0хffffff =)
чтобы наглядно понять разницу - откройте палитру колор-пикера в фотошопе и введите значения в шеснадцатиричном виде с разницой в еденицу, посмотрите на сколько сдвинется кружек, который показывает цвет.

etc
04.09.2006, 14:34
нет, от 0х000000 до 0хffffff =)
И это websafe?

wvxvw
04.09.2006, 14:41
хм, да, сейчас посмотрел, веб-сейф - это так называется 16 бит на канал. Это как-то по-другому... хм, слово забыл...

iNils
04.09.2006, 15:13
нет, от 0х000000 до 0хffffff =)Это 24 бита

wvxvw
05.09.2006, 03:38
2 iNils:
Вот я ж и говорю, что слово забыл... значит не веб-сейф, а как-то по-другому это называется, но не суть важно, главное, что меньше, чем физически показывает экран. Особенно хорошо это видно на оттенках близких к черному или белому, там (если смотреть в фотошопе на каларпикер) кружек, который на цвет показывает прыгает пикселов на 10-20 за еденицу изменения цвета (не знаю как еще это назвать).

iNils
05.09.2006, 11:43
Как меньше? Фотошоп тоже работает с 24 битами, если нет альфа канала, если он есть то добавляется еще 8 бит. Но на сам цвет все равно задается 24 бита.

wvxvw
05.09.2006, 13:54
2 iNils:
Монитор показывает 32 бита на канал, в фотошопе есть специальные прибамбасы которые используют возможности монитора для того, чтобы отобразить "плавные переходы", у флеша этого нету.

iNils
05.09.2006, 14:56
1. А где об этом можно прочесть?
2. Визуально я не вижу особой разницы между флешом и фотошопом. Да есть не соответствие, но как я уже говорил, на качестве это не отражается.

etc
05.09.2006, 15:57
2 iNils:
Монитор показывает 32 бита на канал, в фотошопе есть специальные прибамбасы которые используют возможности монитора для того, чтобы отобразить "плавные переходы", у флеша этого нету.
32 бита = 24 бита цвет + 8 бит прозрачности.

iNils
05.09.2006, 16:40
32 бита = 24 бита цвет + 8 бит прозрачности.Я то это понимаю. Мне интересно, что wvxvw скажет.

wvxvw
05.09.2006, 16:52
2 _etc:
Мы говорим о полупрозрачных мониторах? Какие еще 8 битов на прозрачность для цветов монитора?..

iNils
05.09.2006, 17:02
2 _etc:
Мы говорим о полупрозрачных мониторах? Какие еще 8 битов на прозрачность для цветов монитора?..
Рисуешь ты в фотошопе 2 квадрата с цветом 0xFF0000 и 0x0000FF и прозрачностью 50% (то есть 0x80FF0000 и 0x800000FF). В месте их пересечения цвет будет 0xBF5500AA, что значит 75% прозрачности и сам цвет 0x5500AA. 8 бит альфа канала идут как коэффициенты для обработки сложения самих цветов, но сам монитор все равно дает в итоге только 24 бита.

wvxvw
05.09.2006, 21:50
2 iNils:
Хм, по-моему все-таки все 32 бита описывают именно цвет (т.е. большее количество оттенков), но я чего-то начал сомневаться....... надо литературу какую-нибудь по этому поводу найти.
Кроме всего прочего, просто замерял цвета в соседних пикселах на скринах в первом посте, шаг градиента в флеше даже в 24-битном представлении больше еденицы, так что наверное причина не в этом...

ЗЫ. Сейчас вот попробовал воспроизвести результат из первого поста... пришел в еще большее замешательство.
Вобщем, описываю опыт:
Залил в фотошопе и в флеше одинаковый по размеру прямоугольник (100х1000 пикселов) Градиент от 0xAFFFFF до 0xFFFFFF, поставил скриншоты рядом... При любом увеличении результаты практически одинаковые. Немного отличаются алгоритмы изменения цвета, но шаг одинаковый...

iNils
05.09.2006, 22:15
Цитаты с форума ixbt
Подход с программистской точки зрения объясняет все очень просто. Акселлератор использует 32бита не для вывода 32-битного цвета, а для операций над 32-битными числами, 8 из которых - синие, 8 - зеленые, 8 - красные и 8 на альфа канал. Ни один монитор не выводит 32 бита. Только 24.

Вот, поэтому и говориться, что про 32-битный цвет. Просто раньше (давненько правда) водились карточки, которые могли работать с 24 битами, но не могли с 32.
И еще по поводу фотошопа. Если открыть Color Picker, то размеры цветового поля 256 на 256. А 256 это и есть 8 бит. И когда ты увеличиваешь значение в # на единицу, скажем с 000000 на 000001, то пипетка сместиться ровно на 1 пиксель.

wvxvw
06.09.2006, 01:12
15123

15124
Вот это по поводу колорпикера, изменяем значение на еденицу, кружек сдвигается на 5 пикселов (в первом случае 114 пикселов от края, во втором - 119) (размер сдвига не всегда одинаковый, бывает и больше и меньше).

ЗЫ. Кса, как видно из показателей HSB, фотошоп мог обработать и меньший сдвиг цвета

iNils
06.09.2006, 01:50
Если меняем значение синего канала (1a>1b), то и смотреть изменения надо по синему каналу (и не квадрату, а по полоске. иначе окажется, что кружок совсем не двигается :D), то есть в B выбирать в RGB, а не в HSB (HSB не линейно зависит от RGB). Поэтому пример не корректен.

wvxvw
06.09.2006, 04:50
>>(и не квадрату, а по полоске. иначе окажется, что кружок совсем не двигается)

кто-то из нас чего-то не понимает %) кружек-то двигается =)

Встречный вопрос: физически я могу поставить кружек между двумя значениями (331b1b и 331b1a) при этом значение в поле # не изменится, но цвет изменится... так что за цвет я получу?

iNils
06.09.2006, 11:41
http://www.antula.ru/color-cube.htm
...составляет 16 777 216 цветов.

Данное количество - теоретически возможное количество цветов, которое можно отобразить на на экране монитора.
Там же есть описание HSB, в которой всего 1 795 000 цветов.

wvxvw
06.09.2006, 14:26
Прочитал, но это все равно не ответ на вопрос =)
Пусть в HSB будет еще на порядок меньше цветов - не важно, даже если этих цветов будет всего 5 но все они будут находится в диапазоне от 331b1b до 331b1a. Как с ними быть?

ЗЫ. но это уже очень далеко от темы топа. В конце концов причина низкого качества градиента была явно в чем-то другом...

iNils
06.09.2006, 14:41
1. Какой же ты не понятливый :)) В тех 7 пикселях (разницы между двумя цветам RGB) не находятся 7 разных цветов. Сделай скришот, увеличь его и пипеткой пройдись по соседним пикселя и увидешь, что они могут содержать такой же цвет как и основной пиксель.
2. Низкого качества нет, я же в самом начале дал пример.

iNils
06.09.2006, 14:49
Вот тебе простой пример. Два цвета в hsb, в квадрате (по H) разница между ними в 198 пикселей. А цвет как был в RGB 000000, так им и остался. Зато в HSB вместо 0,0%,0% стало 0,77%,0%.
Опять скажешь, что там больше цветов вмещается? :D

wvxvw
07.09.2006, 02:32
Вобщем, кажется осознал =)
Единственное, с белым или близкими цветами разница практически не заметна, а вот если так же сделать с черными, то при переводе в ЦМЫК получим разные цвета %)

И еще, по поводу градиентов, это не первый случай когда я вижу в флеше "корявый" градиент, раньше думал, что это связано с количеством цветов, теперь вот не знаю почему так... %)

etc
07.09.2006, 13:22
CMYK больше для полиграфии, там цветовое представление другое.