Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   цветорегулировка в canvas (https://javascript.ru/forum/dom-window/52806-cvetoregulirovka-v-canvas.html)

assan 07.01.2015 22:40

цветорегулировка в canvas
 
при преобразовании картинки в канвас (масштабирование поворот обрезка )происходит ухудшение качества, подскажите где можно почитать по исправлению данной проблемы....?

kostyanet 08.01.2015 08:56

Читайте про то как устроен Фотошоп.

kostyanet 08.01.2015 09:09

Подумал что не совсем точно указал направление. Читайте про Корел или Иллюстратор, там проблематика очевиднее.

"Суть такова". Пикселы в процессе трансформации пиксельного изображения рождаются заново из старых пикселов. То есть картинка рендерится вновь, новые пикселы генерируются из старых пикселов, при этом на 1 новый пиксел может потребоваться до 16 старых, а в военное время и того больше.

Короче трансформация пикселов проблема необоримая. Ее можно лишь сделать менее заметной, но ресурсов тогда потребуется гораздо более заметно. Грубо говоря вы должны или сохранять все операции как набор команд, а затем оптимизировав их применять за 1 присест; или вы должны работать с таким пикселяжем, который чтобы испортить надо присесть раз стопицот.

В ФШ по первому варианту устроен smart object - это такой специальный слой-контейнер, или слой-документ, который может содержать векторные и пиксельные данные, а вся работа ведется с его "отпечатком", то есть stamp'ом, который рандерится каждый раз заново из содержания слоя. Поэтому новые пикселы отпечатка всегда в первой инкарнации. Это принцип векторной графики - она тоже рендерится в пикселы, иначе ее не увидеть, но рендерится _каждый раз заново_ из оригинальных данных. А когда вы рендерите пикселы из пикселов и затем пикселы из пикселов из пикселов из пикселов и тп - вот тогда у вас четкотуха и превращается в кал.

Ну вот, оценили масштаб проблемы? Следовательно есть дешевое решение - пользоваться инструментом культурно. То есть понимать что каждый лишний поворот или подгонка масштаба обойдется потерей четкотухи еще на пи пополам. А для тупых есть ФШ онлайн.

ЗЫ Да, вы можете поднимать контраст анизотропных областей, но все равно это будет выглядеть как гавно. Попробуйте unsharp mask. Должны быть уже либы на js для канваса.

kostyanet 08.01.2015 09:28

По технике. В ФШ эшелонированная система кеширования. Превью и ундо работают с экранным кешем. То есть когда вы открываете в ФШ файл, его оригинальные пикселы записываются в срач-диск (типа виндового швопа), а на экран выводятся отрендеренные из тех пикселов - пикселы, по которым вы собственно и наблюдаете все изменения. После того как трансформация применена, она записывается в срач-диск как дополнительные пикселы, но не целиком, а только тот кусок который был затронут и только этот кусок заново рендерится в кэш. Размер кусков пользователь может задать в настройках. Разумеется если вы уменьшили или повернули всю картинку - то сохранены будут все куски. И только когда вы сохраняете пикселы - они переписываются из срача в файл. Короче говоря геморрой шопесец.

assan 09.01.2015 11:34

спасибо за развернутое описание.
тогда как обрабатывают изменения картинки браузеры? т.е изменение размера, поворот не сказываются на отображаемом качестве картинки.
вот как бы просто получить скриншот нужного кусочка изображения

попробовал http://evanw.github.io/webgl-filter/
к вырезанному изображению - не улучшилось.
браузер делает это намного лучше. но как?

DjDiablo 10.01.2015 02:09

Вы бы хоть пример показали а то если честно не ясно о чём идет речь.


Часовой пояс GMT +3, время: 07:17.