I have looked all over for how to correctly manage alpha when I'm resizing a png. I've managed to get it to keep transparency, but only for pixels that are completely transparent. Here's my code:
$src_image = imagecreatefrompng($file_dir.$this->file_name);
$dst_image = imagecreatetruecolor($this->new_image_width, $this->new_image_height);
imagealphablending($dst_image, true);
imagesavealpha($dst_image, true);
$black = imagecolorallocate($dst_image, 0, 0, 0);
imagecolortransparent($dst_image, $black);
imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $this->new_image_width,
$this->new_image_height, $this->image_width, $this->image_height);
imagepng($dst_image, $file_dir.$this->file_name);
Starting with this source image:
The resized image looks like this:
The solution for almost every forum post I've looked at about this issue say to do something like this:
imagealphablending($dst_image, false);
$transparent = imagecolorallocatealpha($dst_image, 0, 0, 0, 127);
imagefill($dst_image, 0, 0, $transparent);
The results from this code fails at saving any alpha whatsoever:
Is there any other solution? Am I missing something with the alpha blending? Why would that work for everyone else, yet utterly fail for me? I'm using MAMP 2.1.3 and PHP 5.3.15.
Well you must have been doing something wrong. The code from the linked duplicate with a couple of lines added to load and save the image:
Produces the image:
i.e. this question (and answer) are a complete duplicate.
i have used simpleImage class for resizing image. You can re-size your image with maintaining aspect ratio. this class is using imagecreatetruecolor and imagecopyresampled core Php functions to re-size image
find complete code at http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/