| 
		Notes	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				Он не дублирует, а дополняет. 
В 0000041 упор на сам факт сведения в PNG. 
В 0000368 - на сведение именно с прозрачностью, а не просто сохранение в данный формат файла как таковой.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0001159)
			 | 
		 
		
			| 
				gpsMax   
			 | 
		 
		
			| 
				10-03-2011 19:22   
							 | 
		 
		 
	 | 
	
		
		
			| 
				Альфой предполагается заливать те места, где нет тайлов? Или что с ней делать?			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				Альфу предлагается просто оставлять на своем месте там, где она существует на исходных тайлах. Это касается GIF и PNG. Например, тот же гибрид гугля - гиф с прозрачностью (на сервере), при попытке его сведения текущим САСом - получаем белый фон вместо альфы. То же самое и с PNG. То есть, исходно существующий альфа-канал безвозвратно теряется и способов его восстановить из сведенного изображения - нет (кроме как опять обработать в фотошопе и ручками снова добавить прозрачность, то есть - пересоздать всю альфу ручками). Безусловная потеря САСом части информации с изображения не есть гуд, отсюда и хотелка. 
 
И да, как фичу - можно делать "альфа-дырки" на месте отсутствующих тайлов. Было бы приятно в фотошопе просто подложить бакграунд нужного цвета под всю карту, а не иметь сикес выделяя каждый пустой квадратик ручками и заливая краской...ведь оных на карте могут быть десятки, тысячи и даже миллионы...			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			| 
				Так как фича касается и GIF(с альфой) в той же мере что и PNG - подредактировал название хотелки.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			| 
				Кстати, при проработке вопроса лучше всего было бы иметь ползунок "альфовости" этой альфы, то есть менять меру прозрачности (согласно обсужденного тут: http://sasgis.org/forum/viewtopic.php?f=2&t=1&p=19807#p19801)			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			| 
				Ну и по какой формуле? Допустим на ползунке выбрано 63 из 255, то есть сильно прозрачное. А пиксел имеет прозрачность 195, тоесть почти не прозрачно. Что выводить в результат?			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				>Ну и по какой формуле? Что выводить в результат?  
Из твоих цифирок выше:  
a=195 (пиксел) 
n=63 (ползунок) 
R=(a/100)*n, т.е. в результат выводить 123 (63% от значения 195). То есть - пиксел будет почти точно полупрозрачный, тогда как при исходных a=195 он был "сильно прозрачным" в исходнике. 
 
Ползунок на максимум (100%) даст нам родную картину альфы как она пришла с сервера. Такое положение предлагаю сделать дефолтным. 
Ползунок же на 0% - даст нам ноль альфы, т.е.полностью непрозрачные пиксели станут даже там, где они были прозрачными изначально (но RGB у них никто не отменял). То есть, слой визуально станет картой - без шаманства с ZMP. :) 
 
Расчет результирующего цвета идет по каноничным: http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D1%8C%D1%84%D0%B0-%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB , у нас лишь введется дополнительная "мера альфовости самой альфы" в процентах от user-defined ползунка.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				PS: 
 
>пиксел имеет прозрачность 195, тоесть почти не прозрачно 
Альфа - это обратная величина, и a=255 соответствует полной прозрачности, а a=0 - нативному цвету, декларируемому как "бакграунд" в хидере, что вкупе с разрешенной альфой дает прозрачность "баграунд-цвета".  
Соответственно, пиксел с a=195 -> это "сильно прозрачный" пиксел.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0001815)
			 | 
		 
		
			| 
				Tolik   
			 | 
		 
		
			| 
				12-04-2011 10:00   
							 | 
		 
		 
	 | 
	
		
		
			
				По этой формуле получается только "затемнение" (полу)прозрачных пикселей. Нужно также "осветление" непрозрачных.  
Т.е. чтобы альфу 0 можно было превратить (в пределе) в 255.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				Ну в САС везде используется альфа в виде однобайтового числа без знака. Так что 0 это полностью прозрачный, а 255 полностью непрозрачный. 
и 195 это таки очень непрозрачный. 
 
			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				>Т.е. чтобы альфу 0 можно было превратить (в пределе) в 255 
Каким образом, если начальных данных об альфе по данному пикселу НЕТ? Того самого значения 'a' из примера выше. Будем всегда умножать ползунок, каким бы большим он ни был - на ноль? Результат немного предсказуем. :)  
 
Это раз. А два - что будем делать с клиппингами? Любое положительное значение альфы, помноженное на растущий положительный ползунок, рано или поздно упрется в предел 1 байта (=255). А так как вся картинка у нас не однородная, а содержит какие-то плавные переходы по альфе - то практически сразу получаем ситуацию, когда более альфовые пиксели уже уперлись в 255, а более соседние можно бы и еще подвигать...То есть, придется либо "пересвечивать" (обрезать по 255) бОльшие пиксели и плевать на них с потерей их реальных значений, либо забыть про ползунок как только хоть один пиксель упрется в 255 чтобы не искажать всю картину (а там такие пиксели могут быть изначально с сервера, например полностью прозрачный участок). 
 
>и 195 это таки очень непрозрачный. 
Windows/Delphi feature? :( 
------------ 
$tiletemp=Image::Magick->new(size=>255x255, magick=>'png', colorspace=>'RGBA');		 
    $tiletemp->Read("xc:red"); 
    $tiletemp->Set(alpha => 'transparent:255'); 
    $tiletemp->Set('transparent-color' => 'red'); 
    $tiletemp->Mogrify('transparent-color' => 'red'); 
$tiletemp->Write('test.png'); 
------------ 
На выхлопе - "стеклянный" (прозрачный) тайл (#FF0000FF в к.пикселе). 
При "transparent:0" - красный непрозрачный тайл (#FF000000) 
 
PS: а мы значение альфы со значением a-маски не путаем? ;) В a-маске как раз обратное положение дел, #00 в маске = прозрачность в изображении (и соответственно #FF альфы, сохраняемый в файл).  
 
В любом случае, это некритично. Если в винде наоборот - ну и иметь это ввиду при расчетах, да и все. Имхо.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0001844)
			 | 
		 
		
			| 
				Tolik   
			 | 
		 
		
			| 
				13-04-2011 09:34   
							 | 
		 
		 
	 | 
	
		
		
			
				Умножать на ноль я как бы не предлагал. 
Если движок работает только на упрозрачнивание (0 - без изменений, 255 - полная прозрачность), то формула будет: 
R = a + n*(255 - a)/255 
Это если линейно, а можно и что-то вроде гамма-коррекции замутить.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				>Умножать на ноль я как бы не предлагал. 
Однако вышеописанная ситуация - не исключена, не так ли?  
А клиппинги будут всегда, как только мы попробуем увеличивать уже оптимизированные (изначально лежащие на промежутке 0...255 при максимуме в 255) значения. 
 
>можно и что-то вроде гамма-коррекции замутить. 
Угу. Осталось найти того, кто это "что-то" будет мутить. :)			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			| 
				А разве есть экспорт в GIF? Если нету, то нужно переименовать хотелку.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0004616)
			 | 
		 
		
			| 
				zed   
			 | 
		 
		
			| 
				23-12-2011 15:08   
							 | 
		 
		 
	 | 
	
		
	 | 
	
		 
	 | 
	
		
		
			| 
				(0005185)
			 | 
		 
		
			| 
				Parasite   
			 | 
		 
		
			
				23-01-2012 09:18   
				 (edited on: 23-01-2012 09:19)			 | 
		 
		 
	 | 
	
		
		
			
				>А разве есть экспорт в GIF? Если нету, то нужно переименовать хотелку.  
Смысл хотелки и заключался в том, чтобы этот  экспорт _сделать_. С прозрачностью. из числа тех ГИФ-тайлов (ГИФ, внимание), которые приходят в программу. 
 
>Изменил.  
Ай малацца! А теперь меняй обратно, ибо 50% описания хотелки - это еще не вся описанная хотелка. :) 
 
			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0005186)
			 | 
		 
		
			| 
				zed   
			 | 
		 
		
			
				23-01-2012 09:20   
				 (edited on: 23-01-2012 09:35)			 | 
		 
		 
	 | 
	
		
		
			
				А нефиг распыляться в описании. Одна хотелка - одно пожелание. PNG и GIF это 2 хотелки. Хочешь ещё отдельно GIF - заводи новую. Тем более, что в истории правок тикета видно, что изначально хотелка была про PNG, а GIF был добавлен позже, как "однотипный". 
 
			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				>PNG и GIF это 2 хотелки.  
Хотелка ОДНА - прекращение потерь альфа-канала там, где оно нужно. 
А я не виноват, что альфа у нас в сас приходит И с гифом, И с пнг. Будет приходить с чем-то третьим - я его тоже сюда допишу, ибо смысл хотелки останется всё в том же: возможность сохранять альфу в тот формат, _в каком оно и пришло_ (или в соседний, коль скоро их два). 
 
PS: Не вижу никакой особой технической сложности сохранять в ГИФ\ПНГ на выходе, коль скоро программой они токи давно и успешно принимаются на входе (то есть, как минимум декодер в проге есть, осталось включить и кодер в эти форматы). Подозреваю даже, что это делается даже той же либой что и другие общераспространенные и открытые форматы.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0005191)
			 | 
		 
		
			| 
				Tolik   
			 | 
		 
		
			| 
				23-01-2012 10:04   
							 | 
		 
		 
	 | 
	
		
		
			
				Parasite, зачем спорить, легче открыть новую хотелку. С png ведь уже работает, стало быть и хотелка д.б. resolved, а с гифом неизвестно когда будет. 
 
Для экспорта в png была присобачена libpng15.dll 
Для гифа она, очевидно, не подходит, надо отыскать (или написать) другую.			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0005192)
			 | 
		 
		
			| 
				zed   
			 | 
		 
		
			| 
				23-01-2012 10:04   
							 | 
		 
		 
	 | 
	
		
		
			
				Нет, сохранение в GIF нужно прикручивать отдельно. Одно дело открыть/сохранить гифку 256*256 pix, а другое дело нормально сохранить снимок в большом разрешении (out of memory с jpeg'ом ещё помним?).  
 
Так что, не важно, с какими форматами САС умеет работать в режиме просмотра карт, склейка это совсем другая кухня и на каждый формат нужна своя хотелка. Дописывание в уже отработанную хотелку новых пожеланий лишено смысла.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				>легче открыть новую хотелку 
Кому легче?  
Лично мне легче было год назад написать костыль и сделать ту конкретную работу тогда, а не после даты назначения хотелки (назначенной на ..хх, а потом и на ..хххх).  
 
Хотелка тут осталась для тех, кому понадобится тот же функционал ровно в зоне моей же задачи (и посему редактирование\кастрацию оной я и не приветствую).  
У кого другие пожелания\другие понимания оной - ать-два в "Создать новый инцидент", а мне-то зачем? Что хотел - я описал выше на момент того запроса, а сейчас оно давно неактуально. Если сделают - будет решпект, нет - так нет, можно вообще закрыть. :)  
 
>нормально сохранить снимок в большом разрешении (out of memory с jpeg'ом ещё помним?) 
Ну ГИФ намного "легче" жпега (и даже ПНГ, если ничего не путаю). "Снимок в большом разрешении" и так создается САСом для сохранения в любой формат (перед кодированием собственно в файл). Задача, имхо, брать линию с того "большого разрешения"\переводить в индексн.цвета\писать в файл, повторить пока линии не кончатся. Чтобы на одной линии вылез "out of memory" - это еще надо очень постараться.... Это если безо всяких либ. Имхо, повторюсь - кодингу САСа я не советчик, но если бы делал я - я бы делал именно так. :)			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0005199)
			 | 
		 
		
			| 
				zed   
			 | 
		 
		
			| 
				23-01-2012 10:58   
							 | 
		 
		 
	 | 
	
		
		
			
				>"Снимок в большом разрешении" и так создается САСом для сохранения в любой формат 
Неа, САСом создаётся только битмапка 256*TargetWidth.  
 
>Это если безо всяких либ. 
Без всяких либ, при сохранении что в jpeg, что в png, что в gif будет out of memory. Либы умеют клеить снимки без дикого использования памяти, а вот внутренний компонент - нет, он создаёт (пытается) в памяти целиком битмапку, а потом только её кодирует.			 | 
		 
		 
	 | 
	
		 
	 | 
	| 
		
	 | 
	
		
		
			
				>САСом создаётся только битмапка 256*TargetWidth. 
Вот в его пределах и плясать 256 раз, получая однопиксельные полоски и топча их в индекс и затем в out. Не?			 | 
		 
		 
	 | 
	
		 
	 | 
	
		
		
			| 
				(0005204)
			 | 
		 
		
			| 
				zed   
			 | 
		 
		
			| 
				23-01-2012 14:30   
							 | 
		 
		 
	 | 
	
		
	 |