SASGIS - SAS.Планета
View Issue Details
0001410SAS.Планета[All Projects] Хотелкаpublic25-07-2012 10:3413-10-2015 08:20
Fetser 
 
normalminorhave not tried
confirmedopen 
WindowsXPSP3
110418 
30xxxx.Vip 
0001410: Склейка в png с 256 цветной палитрой
Тайлы карты яндекс имеют 128 уникальных цветов. После склейки картинки размером в экран имеем
 PNG 757 уникальных цветов 24 BPP (размер файла 1,49 Мб) при 8 BPP было бы 460 кб
No tags attached.
has duplicate 0002394closed vdemidov 8-битный (индексированный) PNG 
Issue History
25-07-2012 10:34FetserNew Issue
25-07-2012 10:40TolikNote Added: 0007888
25-07-2012 10:57vdemidovNote Added: 0007889
25-07-2012 11:00vdemidovStatusnew => confirmed
25-07-2012 11:00vdemidovProduct Version.Nightly => 110418
25-07-2012 11:00vdemidovTarget Version => 40xxxx
25-07-2012 11:00vdemidovSummaryДобавить настройку "Количество цветов" при склейке => Склейка в png с 256 цветной палитрой
25-07-2012 11:00vdemidovDescription Updatedbug_revision_view_page.php?rev_id=3815#r3815
25-07-2012 11:07vasketsovNote Added: 0007890
25-07-2012 11:15vdemidovNote Added: 0007891
25-07-2012 11:35vasketsovNote Added: 0007892
25-07-2012 11:40vdemidovNote Added: 0007893
25-07-2012 11:53vasketsovNote Added: 0007894
25-07-2012 11:58vdemidovNote Added: 0007895
26-07-2012 03:53ParasiteNote Added: 0007899
26-07-2012 05:06vdemidovNote Added: 0007901
26-07-2012 05:31ParasiteNote Added: 0007904
26-07-2012 05:33vdemidovNote Added: 0007906
26-07-2012 12:06PapazolNote Added: 0007931
26-07-2012 13:45vasketsovNote Added: 0007938
27-07-2012 13:02FetserNote Added: 0007963
27-07-2012 13:12zedNote Added: 0007964
27-07-2012 13:13vdemidovNote Added: 0007965
27-07-2012 13:55FetserNote Added: 0007966
30-03-2014 08:44vdemidovRelationship addedhas duplicate 0002394
13-10-2015 08:20vdemidovTarget Version40xxxx => 30xxxx.Vip

Notes
(0007888)
Tolik   
25-07-2012 10:40   
Было бы полезно при склейке карт (не снимков) в png, т.к. при этом сильно уменьшается размер без существенного ухудшения качества.
А для снимков в jpg 256 цветов недостаточно.
(0007889)
vdemidov   
25-07-2012 10:57   
С трудом представляю как это реализовать нормально. Просто для сохранения картинки в 8bpp нужно построить палитру цветов до начала сохранения. Причем в палитре не больше 256 цветов, а сколько их у нас будет по куче тайлов с слоями и метками один бог ведает. Вряд ли многие согласятся ждать в два раза больше времени, пока оно первый раз пройдет по всей картинке и построит гистограмму цветов, а потом по построенной палитре во второй проход склеит саму картинку.
(0007890)
vasketsov   
25-07-2012 11:07   
Предусмотреть на будущее постобработку картинок.
А там пусть сам себе каждый хоть в ASCII коды конвертирует и на ютуб выкладывает.
(0007891)
vdemidov   
25-07-2012 11:15   
Так уже предусмотрена пост обработка. IBitmapPostProcessingConfig
Сейчас она только гамму, яркость и контрастность подкручивает, но можно и к палитре подгонять.
(0007892)
vasketsov   
25-07-2012 11:35   
Я имел в виду чтобы до неё мог юзер дотянуться снаружи программно. Тру плагинъ то есть.
(0007893)
vdemidov   
25-07-2012 11:40   
И толку то? Все равно конечный формат нужно что бы склеивалка потом это учитывала. Так что плагин это склейка или экспорт в конечный формат.
(0007894)
vasketsov   
25-07-2012 11:53   
Толк - вычисление палитры.
(0007895)
vdemidov   
25-07-2012 11:58   
Ну его нафиг. Экспорты и слкейки в конкретные форматы пусть строят палитру какую захотят. Внутри САС.Планеты работать с чем-то кроме 32bpp я смысла не вижу.
(0007899)
Parasite   
26-07-2012 03:53   
>Я имел в виду чтобы до неё мог юзер дотянуться снаружи программно. Тру плагинъ то есть.
А что мешает взять сведенное САСом и пересохранить в том же фотошопе с какой угодно палитрой и постобработкой? Прямо сегодня, всем желающим, и без допиливания САСа. Просто задача имхо настолько локальна и настолько элементарно делается вне САСа, что просить допилить под нее именно сас - ну, я даже и не знаю. Им волю дай - они весь функционал фотошопа перетащить в сас потребуют... :)

PS: Чтобы не было потерь и артефактов - то в сасе сводить не в жпег а в БМП например.
(0007901)
vdemidov   
26-07-2012 05:06   
Ну, чисто теоретически, при сведении именно карты в png с палитрой, можно выиграть достаточно много места и времени если писать сразу с правильной палитрой, но как это реализовать я пока не знаю. Например можно перед склейкой получить пару сотен рендомо выбранных тайлов и по ним построить палитру, надеясь на то что выборка достаточно репрезентативная.
(0007904)
Parasite   
26-07-2012 05:31   
>можно перед склейкой получить пару сотен рендомо выбранных тайлов и по ним построить палитру
В итоге ВСЕ области, которые не попали в рандомную выборку и имеют уникальные цвета (например, озеро или еще какая точка\линия на карте, отметки знаков на дорогах и прочее, встречающееся далеко не на каждом тайле - но встречающееся) будут иметь весьма загадочный цвет по сравнению с оригиналом.

Не, как по мне - так лучше гарантированные цвета и бОльший размер файла, чем такая отсебятина. Тем более учитывая то, что операция сведения весьма ресурсоемка, и в случае корявых результатов переделывать ее ни у кого не будет никакого желания. Глюки с корявыми цветами в ГИФе (ныне вылеченные) кажется я сюда добавлял с годик назад, насмотрелся... :)
(0007906)
vdemidov   
26-07-2012 05:33   
Ну, я в этом с тобой полностью согласен. Потому и Target Version такую поставил.
(0007931)
Papazol   
26-07-2012 12:06   
Если речь идёт о склейке (а не об отображении в программе), то заморачиваться нет смысла. Ведь склеивают карты не тысячами. Кучи графических программ могут менять количество цветов в картинке. Обработать склееную карту - как два пальца об асфальт. Заодно и сразу будет видно, что получилось, может, глаза бы не глядели, тогда можно оставить оригинал.
(0007938)
vasketsov   
26-07-2012 13:45   
>можно перед склейкой получить пару сотен рендомо выбранных тайлов и по ним построить палитру
Именно про это я и писал про плагины. Плагин построения палитры. Общий на всех (ля склеек и экспортов).
(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 так не умеет, и соответственно, все его возможности в данном случае становятся недоступны.
(0007965)
vdemidov   
27-07-2012 13:13   
Вперед. Склейте картинку хотя бы 32000 на 32000 и посмотрите сколько займет эта операция. А скорее всего вообще умрет.
(0007966)
Fetser   
27-07-2012 13:55   
Точно подсунул FreeImage картинку 40000х20000, он меня обматерил и отключился. IrfanView также не смог её даже загрузить, написал недостаточно памяти. Но подобные размеры возможно и нужны для каких то специфических задач. Если даже просмотрщик не в состоянии их показать. Обычные же картинки какие чаще всего приходится клеить это для печати на А4 или А3, также для пересылке по почте. И они имеют размеры где-то 2000х1500 Вот с такими все справляются за секунду. Особой необходимости в этом функционале нет, поскольку уже писал сторонним софтом понижается цветность на раз. Если когда нибудь такой функционал появится и в сас то будет хорошо.