ID: 45030 Updated by: [EMAIL PROTECTED] Reported By: lieyang at yahoo dot com Status: Feedback Bug Type: GD related Operating System: x86_64 GNU/Linux Kernel 2.6.9-4 PHP Version: 5.2.6 Assigned To: pajoye New Comment:
We need a better reproducible example here, including the source image. When the source image has a perfect alpha channel, I see no noise. Try this: $imageSrc = imagecreatetruecolor(500, 500); imagealphablending($imageSrc, false); imagesavealpha($imageSrc, true); $color = imagecolorallocatealpha($imageSrc, 0, 0, 0, 127); imagefill($imageSrc, 0, 0, $color); $imageDst = imagecreatetruecolor(50, 50); imagealphablending($imageDst, false); imagesavealpha($imageDst, true); imagecopyresampled($imageDst,$imageSrc, 0, 0, 0, 0, 50, 50, 500, 500); header('Content-type: image/png'); imagepng($imageDst); Previous Comments: ------------------------------------------------------------------------ [2008-05-17 22:52:00] [EMAIL PROTECTED] In fact yes, I need the source image (what you have in $imageData). Sorry for the double posts. ------------------------------------------------------------------------ [2008-05-17 22:48:55] [EMAIL PROTECTED] no need for src images :-) ------------------------------------------------------------------------ [2008-05-17 22:43:05] [EMAIL PROTECTED] Please provide me the source image and the result you get. You can use http://bugs.libgd.org as well as you can add attachments to your report. ------------------------------------------------------------------------ [2008-05-17 21:43:31] lieyang at yahoo dot com Description: ------------ When resizing a 24 bit png image with imagecopyresampled, the destination image alpha channel contains noise where it should be completely transparent. When the re-sized image is displayed on Motorola phones with only 4 levels of transparency, the image shows many dark dots. If we replace imagecopyresampled with imagecopyresized in the following sample reproduce code, the problem goes away. Reproduce code: --------------- $imageSrc = imagecreatefromstring($imageData); $imageDst = imagecreatetruecolor($width, $height); imagealphablending($imageDst, false); $color = imagecolorallocatealpha($imageDst, 0, 0, 0, 127); imagefill($imageDst, 0, 0, $color); imagesavealpha($imageDst, true); imagecopyresampled($imageDst,$imageSrc, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); Expected result: ---------------- Completely transparent regions should still be completely transparent in destination image. Actual result: -------------- Destination image alpha channel noise (some pixel values that should be fully transparent have different value "2"). You can see the noise all over the transparent regions with any graphics tools (for example, color selection with gimp). ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45030&edit=1