ID: 23808 Comment by: phpuser at panoramas dot de Reported By: i dot a at signalsystem-bz dot it Status: Feedback Bug Type: GD related Operating System: Win2k server PHP Version: 4.3.2RC4 New Comment:
I was going to file this as a new bug, but thought i'd rather add it here, since it's the same basic problem: After upgrading to 4.3.2, the imagecopymerge function is broken. Reverting to 4.3.1 removes the error. My configure line: (unchanged since 4.3.1) './configure' '--with-mysql' '--prefix=/mysrv/php' '--enable-ftp' '--with-apxs=/mysrv/apache/sbin/apxs' '--with-config-file-path=/mysrv/php-conf' '--disable-pear' '--enable-track-vars' '--with-gd' '--with-jpeg-dir=/usr/local' '--with-png-dir=/usr/local' '--with-zlib-dir=/usr/local' '--disable-cli' '--with-t1lib=/usr/local' Summary of script function: - Takes one image A from file (JPEG 24bit). - generates another image B with same dimensions, 24 bit, and fills it with 50 percent gray - (left out: gets a set of imagemap coordinates from a database and draws them as black outline, white area inside the image B) - merges image B on top of image A with 40 percent transparency - returns the result. Effect of error: No blending occurs with 4.3.2. Only image B is returned, albeit "weaker" or "stronger" depending on the transparency setting in imagecopymerge(). Leaving out the imagecopymerge() command returns the original image A, as expected. Moving the coordinates results in a black background being visible (should be image A). My unqualified guess: Looks as if imagecopymerge() takes a black image instead of image A. Side notes: replacing imagecopymerge with imagecopymergegray actually returns the both images overlaid, but with palette image color mixup effects. Example source code (requires a jpeg image "test.jpg" of arbitrary size to test) -- begin code -- $uim = imagecreatefromjpeg("test.jpg") or die ("Cannot Initialize new GD image stream"); imagealphablending ($uim, TRUE ); # leaving this out changes nothing #### fill overlay with gray $im = imagecreatetruecolor( imagesx($uim) , imagesy($uim) ); # Overlay-Bild $migra=imagecolorallocate ($im, 128,128,128); imagefilledrectangle ( $im , 0,0 , imagesx($im)-1 , imagesy($im)-1 , $migra ); # database drawin left out here imagecopymerge ( $uim, $im, 0, 0, 0, 0, imagesx($uim), imagesy($uim), 40); header ("Content-type: image/jpeg"); imagejpeg ($uim ,'', 75); imagedestroy($uim); imagedestroy($im); -- end code -- Previous Comments: ------------------------------------------------------------------------ [2003-05-30 08:32:21] [EMAIL PROTECTED] Not enough information was provided for us to be able to handle this bug. Please re-read the instructions at http://bugs.php.net/how-to-report.php If you can provide more information, feel free to add it to this bug and change the status back to "Open". Thank you for your interest in PHP. Could you provide a copy of the images used in your example as well as the expected output image. ------------------------------------------------------------------------ [2003-05-26 04:24:58] i dot a at signalsystem-bz dot it I had under php 4.3.1 some code to blend in transparency a logo over some pictures before displaying them - all was working perfectly. When i installed php 4.3.2rc4, i noticed that the same code stopped working - where first was blending 2 images, now is acting this way: - with high transparency value in imagecopymerge, the 2nd image covers totally the destination one and the transparent color is drawed all grey - with low transparency value in imagecopymerge, the 2nd image transparent color becomes very dark-black and covers the destination image the code i'm using is below: if (isset($_REQUEST['img'])) $img=$_REQUEST['img']; else $img=''; $b = imagecreatefromjpeg($img); $bx = imagesx($b); $by = imagesy($b); ImageAlphaBlending($b, true); $logoImage = ImageCreateFromPNG('logo.png'); $logoW = ImageSX($logoImage); $logoH = ImageSY($logoImage); if ($logoW > $bx or $logoH > $by) { $x1 = $bx; $y1 = $bx*$logoH/$logoW; if ($x1 > $bx or $y1 > $by) { $y1 = $by; $x1 = $by*$logoW/$logoH; } $b1 = imagecreatetruecolor($x1,$y1); imagecopyresampled($b1,$logoImage,0,0,0,0,$x1,$y1,$logoW,$logoH); imageDestroy($logoImage); $logoImage = $b1; $logoW = $x1; $logoH = $y1; } ImageCopyMerge($b,$logoImage,($bx - $logoW)/2,($by - $logoH)/2,0,0,$logoW,$logoH,14); imagejpeg($b,"blend.jpg",90); imageDestroy($b); ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23808&edit=1