PNG24. Инверсия альфа-канала

Narrator

Новичок
PNG24. Инверсия альфа-канала

Сразу объясню задачу. Есть PNG24 файл с изображением предмета. Все вокруг - прозрачная область. Каким образом с помощью PHP можно осуществить инверсию альфа-канала? В результате прозрачные области должны стать непрозрачными и наоборот. Т.е., пиксель с альфа-индексом 127 должен получить индекс 0, а, например, с индексом 117 - получить 10. Как это сделать? Спасибо.

-~{}~ 19.06.08 10:10:

Грубо говоря, нужно получить подобный результат:
 

kode

never knows best
Narrator

У вас времени не хватает 5 минут потратить чтобы разобратся в пустячной проблеме?

PHP:
$im = imagecreatefrompng("test.png");
imagealphablending($im,true);
imagesavealpha($im,false);


for($x=0;$x<=imagesx($im);$x++){
	for ($y=0;$y<=imagesy($im);$y++){
		$rgba = imagecolorat($im,$x,$y);
		$colors = imagecolorsforindex($im,$rgba);
		$alpha = 127-$colors['alpha'];
		imagesetpixel($im,$x,$y,imagecolorallocatealpha($im,$colors['red'],$colors['green'],$colors['blue'],$alpha));
	}
}


header("Content-Type: image/png");
imagepng($im);
 

iamFake

Mind Of Liberty
а разве png24 имеет альфа канал? вроде как альфа канал имеет png32, а png8 и png24 не имеют оного... покрайней мере так говорит Adobe Fireworks...
 

kode

never knows best
Автор оригинала: iamFake
а разве png24 имеет альфа канал? вроде как альфа канал имеет png32, а png8 и png24 не имеют оного... покрайней мере так говорит Adobe Fireworks...
i lold, может я и отстал от жизни, но мне всегда казалось что существует только png 8 (1 битовая прозрачность) и png 24 (7 битовая прозрачность)
 
Сверху