průhlednost u PNG

3 příspěvky

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Ahoj všem používám svou funkci na předělání velikosti obrázku (viz níže), ale teď jsem zjistil, že když do ní pustím PNG obrázek, který je v originále průhledný (pozadí), tak po zmenšení se mi udělá černé pozadí. a průhlednost je pryč. Koukám do toho hodiny Google taky nic, už si nevím rady. Děkuji.
  2. function obrazek($sirka, $vyska, $soubor, $kam, $id, $dopocitat = 'nic') { //zjistime typ obrazku $imgtype=getimagesize($soubor); switch($imgtype[2]){ case 1: $im=imagecreatefromgif($soubor); $k = ".gif"; break; case 2: $im=imagecreatefromjpeg($soubor); $k = ".jpg"; break; case 3: $im=imagecreatefrompng($soubor); imagealphablending($im, true); $k = ".png"; break; } $src_width=imagesx($im); $src_height=imagesy($im); //ulozi se v originalni velikosti if($sirka == 0 and $vyska == 0) { $height1=$src_height; $width1=$src_width; $thumb1=imagecreatetruecolor($width1,$height1); imagealphablending($thumb1, true); imagecopyresampled($thumb1,$im,0,0,0,0,$width1,$height1,$src_width, $src_height); $tmp_cil1=$kam.$id.$k; if (file_exists($tmp_cil1)) unlink($tmp_cil1); switch($imgtype[2]){ case 1: imagegif($thumb1,$tmp_cil1); break; case 2: imagejpeg($thumb1,$tmp_cil1, 100); break; case 3: imagesavealpha($thumb1, true); imagepng($thumb1,$tmp_cil1); break; } imagedestroy($thumb1); } else { if($dopocitat == "sirku") { $height2=$vyska; $width2=$height2/$src_height*$src_width; } elseif($dopocitat == "vysku") { $width2=$sirka; $height2=$width2/$src_width*$src_height; } elseif($dopocitat == "nic") { $width2=$sirka; $height2=$vyska; } $thumb2=imagecreatetruecolor($width2,$height2); imagealphablending($thumb2, true); imagecopyresampled($thumb2,$im,0,0,0,0,$width2,$height2,$src_width, $src_height); $tmp_cil2=$kam.$id.$k; if (file_exists($tmp_cil2)) unlink($tmp_cil2); switch($imgtype[2]){ case 1: imagegif($thumb2,$tmp_cil2); break; case 2: imagejpeg($thumb2,$tmp_cil2, 100); break; case 3: imagesavealpha($thumb2, true); imagepng($thumb2,$tmp_cil2); break; } imagedestroy($thumb2); } }
  3. Docela špatně se to tady čte.. takže jenom vložím kus kódu, u kterého (polo)průhlednost funguje. Je sice někdy z roku 2008, ale to snad vadit nebude.. :) public function load($filename,$alpha,$x,$y) { if(!$img = @imagecreatefrompng($filename)) { $img = imagecreatetruecolor($x,$y); //Blank image imagestring($img,1,5,5,'Background loading failed.',imagecolorallocate($img,255,255,255)); } elseif($alpha) { imagealphablending($img,true); imagesavealpha($img,true); } return $img; } public function create($x,$y,$transparent) { $img = imagecreatetruecolor($x,$y); if($transparent) { imagealphablending($img,true); imagecolortransparent($img,imagecolorallocate($img,0,0,0)); imagesavealpha($img,true); }else { imagealphablending($img,false); imagesavealpha($img,true); } return $img; } public function copy($dest,$source,$dstx,$dsty,$srcx,$srcy,$dstw,$dsth,$srcw,$srch) { imagealphablending($source,false); imagefill($source,0,0,imagecolortransparent($source,imagecolorallocatealpha($source,0,0,0,127))); imagesavealpha($source,true); imagecopyresampled($dest,$source,$dstx,$dsty,$srcx,$srcy,$dstw,$dsth,$srcw,$srch); return true; } public function save($img) { $filename = $this->path.'example.png'; imagepng($img,$filename); return true; } Přebrat si to ale budeš muset sám..

← Zpět na všechna témata