Zachování transparence u png

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
deric
Člen | 93
+
0
-

Mám transparentní png (watermark), který vkládám do obrázků. Když jsem zmenšil png pomocí Image::resize() změnila se barva transparentního pozadí na černou. Je možné tomuto nějak předejít?

Jod
Člen | 701
+
0
-

Mne to funguje bez problémov. Asi robíš niečo zle.

David Grudl
Nette Core | 8218
+
0
-

Možná ho zkus uložit v 24bit s alfa kanálem.

deric
Člen | 93
+
0
-

Když jsem png uložil ve photoshopu, tak to hodilo Unknown image type. PNG z gimpu mi způsobovalo výše uvedené problémy, ale aspoň to fungovalo… Zkoušel jsem to ukládat jako PNG-24 (interlaced+transparency)

Jod
Člen | 701
+
0
-

Takže to ide, či nie? Teraz newem :D
Ja to robím takto a všetko mi funguje

<?php
function Image_prototype_addWatermark(Image $_this, $file)
{
	$watermark = Image::fromFile(WWW_DIR . $file);
	$dest_x = $_this->getWidth() - $watermark->getWidth() - 5;
	$dest_y = $_this->getHeight() - $watermark->getHeight() - 5;
	$_this->place($watermark, $dest_x, $dest_y);
}
?>

PNG je z photoshopu

Editoval Jod (23. 2. 2009 20:54)

deric
Člen | 93
+
0
-

Mám hlavně problém s tím, že mi to png z photoshopu vůbec nepřečte (jsou tam vrstvy se soft lighting a opacity na 60%). A jinak to ještě zmenšuju…

	    $watermark = Image::fromFile(WWW_DIR.'/images/watermark.png');
if($watermark->getWidth() > $image->getWidth()){
    $w = $image->getWidth() *0.8;
    $h = $image->getHeight() *0.8;
    $watermark->resize($w, $h);
}
$image->place($watermark, '50%', '50%');
Ola
Člen | 385
+
0
-

Tak to všechno sluč do jedný vrstvy..