SASGIS - SAS.Планета |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0002393 | SAS.Планета | [All Projects] Баг | public | 30-03-2014 07:48 | 31-03-2014 18:43 |
|
Reporter | gma | |
Assigned To | | |
Priority | low | Severity | minor | Reproducibility | always |
Status | confirmed | Resolution | open | |
Platform | Windows | OS | Vista | OS Version | Home Basic |
Product Version | 131111 | |
Target Version | 29xxxx | Fixed in Version | | |
|
Summary | 0002393: Определение цвета прозрачности при генерировании тайлов |
Description | Создаю меньший слой из большего. В исходнике 8-битный PNG с alfa-каналом (т.е. с прозрачными полями) на выходе получаю 24 бит с дополнительным серым полем вместо прозрачности. Исхдники: ...\z15\9565\20752.png, 20753.png, ...\z15\9566\20752.png, 20753.png...
Результат: ...\z14\4832\10376.png
Похоже, Планета зачем-то подставляет поверх прозрачности плашку фона (у меня стоит silver), дополняя тайл до размерности 256, что при последующей склейке граничных тайлов может помешать.
Дополнительное неудобство создаётся появлением 24-битных файлов, которые приходится дополнительно конвертировать обратно в индекс. Отсюда происходит хотелка, чтобы Планета умела создавать сжатые индексированные PNG как при тайловой генерации, так и при склейке карт. |
Steps To Reproduce | |
Additional Information | |
Tags | No tags attached. |
Relationships | |
Attached Files | png.zip (57,249) 30-03-2014 07:48 http://www.sasgis.org/mantis/file_download.php?file_id=1719&type=bug |
|
Issue History |
Date Modified | Username | Field | Change |
30-03-2014 07:48 | gma | New Issue | |
30-03-2014 07:48 | gma | File Added: png.zip | |
30-03-2014 09:05 | vdemidov | Priority | normal => low |
30-03-2014 09:05 | vdemidov | Status | new => confirmed |
30-03-2014 09:05 | vdemidov | Product Version | .Nightly => 131111 |
30-03-2014 09:05 | vdemidov | Target Version | => 29xxxx |
30-03-2014 16:42 | zed | Note Added: 0014060 | |
30-03-2014 16:45 | zed | Summary | Лишний цвет на сгенерированном тайле, генерация 24битPNG из 8битPNG => Определение цвета прозрачности при генерировании тайлов |
30-03-2014 16:46 | zed | Note Added: 0014061 | |
31-03-2014 09:21 | vdemidov | Note Added: 0014078 | |
31-03-2014 15:58 | gma | Note Added: 0014081 | |
31-03-2014 17:14 | zed | Note Added: 0014082 | |
31-03-2014 17:15 | zed | Note Edited: 0014082 | bug_revision_view_page.php?bugnote_id=14082#r6000 |
31-03-2014 18:37 | gma | Note Added: 0014089 | |
31-03-2014 18:42 | zed | Note Added: 0014090 | |
31-03-2014 18:43 | gma | Note Added: 0014091 | |
01-04-2014 08:22 | gma | Note Edited: 0014089 | bug_revision_view_page.php?bugnote_id=14089#r6007 |
Notes |
|
(0014060)
|
zed
|
30-03-2014 16:42
|
|
Чтобы определить цвет прозрачности, придётся анализировать все пиксели сгенерированного тайла на предмет их прозрачности, что сильно замедлит весь процесс. К тому же, для jpeg, к примеру, это будет вообще пустая трата времени.
Как вариант, на эту вкладку можно добавить поле выбора цвета фона, который и использовать для генерирования тайлов. Прозрачным обычно делается белый или чёрный цвет, так что должно помочь. |
|
|
(0014061)
|
zed
|
30-03-2014 16:46
|
|
> на выходе получаю 24 бит
На выходе у вас получаются 32-х битные png. |
|
|
|
ИМХО параметры сохранения генерируемых тайлов нужно задавать в параметрах операции. Для jpg - степень сжатия, для png наличие прозрачности и тип (палитра или нет). |
|
|
(0014081)
|
gma
|
31-03-2014 15:58
|
|
Заголовок, по-моему, не совсем верен -- у прозрачности нет цвета, более того, А-канал это вообще не цвет, это его отсутствие. http://ru.wikipedia.org/wiki/%C0%EB%FC%F4%E0-%EA%E0%ED%E0%EB.
"На выходе у вас получаются 32-х битные png" -- в любом случае, это в разы больше входного файла, который индекс (max 256 цветов) с А-каналом. Приходится после генерации соседних слоёв использовать внешний конвертер. Ладно бы я склеивал карту -- она одна, хотя и там лишнее время и лишняя операция, а переделывать сотни тыщщ тайлов -- это на сутки машинного удовольствия. |
|
|
(0014082)
|
zed
|
31-03-2014 17:14
(edited on: 31-03-2014 17:15) |
|
> у прозрачности нет цвета
Это для конечного пользователя его нет, а в машинном понимании он есть. Ведь фон-то нужно залить какими-то байтами. Вот и заливают его однородным цветом и устанавливают ему абсолютную прозрачность. И если вы попробуете открыть такой файл в программе, не поддерживающей прозрачность, то увидите этот фон своими глазами. Вот и выходит, что чтобы залить фон правильным цветом, нужно проанализировать пиксели сгенерированного тайла, найти пиксели с абсолютной прозрачностью, взять их цвет (а он будет для всех одинаковый, поэтому достаточно первого попавшегося пикселя) и залить этим цветом пустующее пространство.
> в любом случае, это в разы больше входного файла
Только это уже не баг, а хотелка. А в этом тикете обсуждение за баг.
|
|
|
(0014089)
|
gma
|
31-03-2014 18:37
(edited on: 01-04-2014 08:22) |
|
"Только это уже не баг, а хотелка" -- Я оформлял её как хотелку, но её прикрыли, не сильно разбираясь. Могу оформить как баг, если есть желание. Собственно от оформления мало что меняется -- есть проблема и хочется, чтобы она была решена.
|
|
|
(0014090)
|
zed
|
31-03-2014 18:42
|
|
> но её прикрыли, на сильно разбираясь
Если вы про 0002329, то хотелка закрыта как дубль вот этой: 0001410
> есть проблема и хочется, чтобы она была решена
Да, но не нужно мешать несколько проблем в одну кучу. Одна проблема, один тикет. Прозрачность - один тикет, 8 бит - другой. |
|
|
(0014091)
|
gma
|
31-03-2014 18:43
|
|
"нужно проанализировать пиксели сгенерированного тайла, найти пиксели с абсолютной прозрачностью, взять их цвет" -- можно ли ( в машинном понимании) сделать проще -- взять первый попавшийся цвет (в моём случае цвет фона: 192 х 3) и сделать его прозрачным? И не надо ничего анализировать... |
|