#34336 [Opn]: ext/gd: imagerotate destroys transparency information

From: Date: Fri, 02 Sep 2005 22:36:30 +0000
Subject: #34336 [Opn]: ext/gd: imagerotate destroys transparency information
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-84455@lists.php.net to get a copy of this message
ID: 34336 User updated by: techtonik@php.net Reported By: techtonik@php.net Status: Open Bug Type: Feature/Change Request Operating System: * PHP Version: 5CVS, 4CVS (2005-08-31) Assigned To: pajoye New Comment: JFY, a new fourth parameter "ignore_transparent" was already added to imagerotate in PHP 5.1 - see http://php.net/imagerotate Previous Comments: ------------------------------------------------------------------------ [2005-09-03 00:06:30] techtonik@php.net Well, it works for PHP5, but what to do with PHP4? Why it is impossible to change the behavior to keep transparency by default? Why change transparent to black while rotating in PHP4? It still seems like a bug to me. Why this doesn't work either? ... $sprTransparent = imagecolortransparent($spr); //sprite rotation $rotate = 15; $spr = imagerotate($spr, $rotate, $sprTransparent); $sprTransparent = imagecolortransparent($spr, $sprTransparent); ... ------------------------------------------------------------------------ [2005-09-02 10:10:10] pajoye@php.net Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip Try the newly added 4th argument: imagerotate($rsr, $angle, $bg_color, $keeptransparency); However, note that this is interpolated colors in the destination images (rotated), meaning that if the original image has some antialiased artifacts with the bgd color, you will notice them in the rotated image (in your case, a white border), not much can be done against that. --Pierre ------------------------------------------------------------------------ [2005-09-01 21:41:26] techtonik@php.net Description: ------------ Imagerotate doesn't preserve transparency information. Next image was used in example below: http://img24.imageshack.us/img24/228/spritepaw8alpha2os.png Reproduce code: --------------- <?php $sprName = "sprite_paw8_alpha.png"; $spr = imagecreatefrompng($sprName); //create sprite object //get sprite's transparent color $sprTransparent = imagecolortransparent($spr); //sprite rotation $rotate = 15; //rotate sprite, ?keeping transparent pixels $spr = imagerotate($spr, $rotate, $sprTransparent); header("Content-type: image/gif"); imagegif($spr); imagedestroy($spr); ?> Expected result: ---------------- Rotated image with transparent background. Actual result: -------------- Rotated image with black background. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34336&edit=1

« previous php.bugs (#84455) next »