Notes |
|
(0007888)
|
Tolik
|
25-07-2012 10:40
|
|
Было бы полезно при склейке карт (не снимков) в png, т.к. при этом сильно уменьшается размер без существенного ухудшения качества.
А для снимков в jpg 256 цветов недостаточно. |
|
|
|
С трудом представляю как это реализовать нормально. Просто для сохранения картинки в 8bpp нужно построить палитру цветов до начала сохранения. Причем в палитре не больше 256 цветов, а сколько их у нас будет по куче тайлов с слоями и метками один бог ведает. Вряд ли многие согласятся ждать в два раза больше времени, пока оно первый раз пройдет по всей картинке и построит гистограмму цветов, а потом по построенной палитре во второй проход склеит саму картинку. |
|
|
|
Предусмотреть на будущее постобработку картинок.
А там пусть сам себе каждый хоть в ASCII коды конвертирует и на ютуб выкладывает. |
|
|
|
Так уже предусмотрена пост обработка. IBitmapPostProcessingConfig
Сейчас она только гамму, яркость и контрастность подкручивает, но можно и к палитре подгонять. |
|
|
|
Я имел в виду чтобы до неё мог юзер дотянуться снаружи программно. Тру плагинъ то есть. |
|
|
|
И толку то? Все равно конечный формат нужно что бы склеивалка потом это учитывала. Так что плагин это склейка или экспорт в конечный формат. |
|
|
|
Толк - вычисление палитры. |
|
|
|
Ну его нафиг. Экспорты и слкейки в конкретные форматы пусть строят палитру какую захотят. Внутри САС.Планеты работать с чем-то кроме 32bpp я смысла не вижу. |
|
|
|
>Я имел в виду чтобы до неё мог юзер дотянуться снаружи программно. Тру плагинъ то есть.
А что мешает взять сведенное САСом и пересохранить в том же фотошопе с какой угодно палитрой и постобработкой? Прямо сегодня, всем желающим, и без допиливания САСа. Просто задача имхо настолько локальна и настолько элементарно делается вне САСа, что просить допилить под нее именно сас - ну, я даже и не знаю. Им волю дай - они весь функционал фотошопа перетащить в сас потребуют... :)
PS: Чтобы не было потерь и артефактов - то в сасе сводить не в жпег а в БМП например. |
|
|
|
Ну, чисто теоретически, при сведении именно карты в png с палитрой, можно выиграть достаточно много места и времени если писать сразу с правильной палитрой, но как это реализовать я пока не знаю. Например можно перед склейкой получить пару сотен рендомо выбранных тайлов и по ним построить палитру, надеясь на то что выборка достаточно репрезентативная. |
|
|
|
>можно перед склейкой получить пару сотен рендомо выбранных тайлов и по ним построить палитру
В итоге ВСЕ области, которые не попали в рандомную выборку и имеют уникальные цвета (например, озеро или еще какая точка\линия на карте, отметки знаков на дорогах и прочее, встречающееся далеко не на каждом тайле - но встречающееся) будут иметь весьма загадочный цвет по сравнению с оригиналом.
Не, как по мне - так лучше гарантированные цвета и бОльший размер файла, чем такая отсебятина. Тем более учитывая то, что операция сведения весьма ресурсоемка, и в случае корявых результатов переделывать ее ни у кого не будет никакого желания. Глюки с корявыми цветами в ГИФе (ныне вылеченные) кажется я сюда добавлял с годик назад, насмотрелся... :) |
|
|
|
Ну, я в этом с тобой полностью согласен. Потому и Target Version такую поставил. |
|
|
|
Если речь идёт о склейке (а не об отображении в программе), то заморачиваться нет смысла. Ведь склеивают карты не тысячами. Кучи графических программ могут менять количество цветов в картинке. Обработать склееную карту - как два пальца об асфальт. Заодно и сразу будет видно, что получилось, может, глаза бы не глядели, тогда можно оставить оригинал. |
|
|
|
>можно перед склейкой получить пару сотен рендомо выбранных тайлов и по ним построить палитру
Именно про это я и писал про плагины. Плагин построения палитры. Общий на всех (ля склеек и экспортов). |
|
|
(0007963)
|
Fetser
|
27-07-2012 13:02
|
|
Никак не ожидал что простейшая операция "уменьшить цветность" уже склеенного изображения вызовет такие проблемы. Я обрабатываю картинки простым бат файлом из одной строки
start c:\"Program Files"\IrfanView\i_view32.exe "d:\temp\*.png" /bpp=8 /convert="d:\temp\*.png"
Но поскольку в программе уже есть FreeImage.dll это явный моветон использование сторонних программ. Цитата от barazuk
"Пишется мегатулза с использованием FreeImage.
FreeImage_ColorQuantizeEx.
DLL_API FIBITMAP *DLL_CALLCONV FreeImage_ColorQuantizeEx(FIBITMAP *dib, FREE_IMAGE_QUANTIZE quantize FI_DEFAULT(FIQ_WUQUANT),
int PaletteSize FI_DEFAULT(256), int ReserveSize FI_DEFAULT(0), RGBQUAD *ReservePalette FI_DEFAULT(NULL));
Можно задавать количество цветов, резервировать предопределенные цвета в палитре. Используются два алгоритма:
Цитата
Wu, Xiaolin, Efficient Statistical Computations for Optimal Color Quantization. In:
Graphics Gems, vol. II, p. 126-133. [Online] http://www.ece.mcmaster.ca/~xwu/
Dekker A. H., Kohonen neural networks for optimal color quantization.
Network: Computation in Neural Systems, Volume 5, Number 3, Institute of Physics Publishing, 1994. [Online]
http://members.ozemail.com.au/~dekker/NEUQUANT." |
|
|
(0007964)
|
zed
|
27-07-2012 13:12
|
|
Тут есть специфика: FreeImage загружает снимок целиком в память и только потом с ним работает, поэтому в САСе он используется только для работы с тайлами.
В случае же склейки снимков в файл, используются т.н. scanline методы, которые загружают в память только одну строку изображения, что позволяет сохранять снимки больших разрешений при малом использовании оперативки. FreeImage так не умеет, и соответственно, все его возможности в данном случае становятся недоступны. |
|
|
|
Вперед. Склейте картинку хотя бы 32000 на 32000 и посмотрите сколько займет эта операция. А скорее всего вообще умрет. |
|
|
(0007966)
|
Fetser
|
27-07-2012 13:55
|
|
Точно подсунул FreeImage картинку 40000х20000, он меня обматерил и отключился. IrfanView также не смог её даже загрузить, написал недостаточно памяти. Но подобные размеры возможно и нужны для каких то специфических задач. Если даже просмотрщик не в состоянии их показать. Обычные же картинки какие чаще всего приходится клеить это для печати на А4 или А3, также для пересылке по почте. И они имеют размеры где-то 2000х1500 Вот с такими все справляются за секунду. Особой необходимости в этом функционале нет, поскольку уже писал сторонним софтом понижается цветность на раз. Если когда нибудь такой функционал появится и в сас то будет хорошо. |
|