Я рассмотрел все, как правильно управлять альфой, когда я изменяю размер png. Мне удалось добиться прозрачности, но только для прозрачных пикселей. Вот мой код:Изменение размера изображений с прозрачностью в php
$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);
Начиная с этого исходного изображения:
изменения размера изображение выглядит следующим образом:
Решение почти каждый пост на форуме I Мы рассмотрели этот вопрос, чтобы сказать что-то вроде этого:
imagealphablending($dst_image, false);
$transparent = imagecolorallocatealpha($dst_image, 0, 0, 0, 127);
imagefill($dst_image, 0, 0, $transparent);
Результаты этого кода не удается при сохранении каких-либо альфа вообще:
Есть ли другое решение? Я что-то пропускаю с альфа-смешением? Почему это будет работать для всех остальных, но для меня совершенно не получается? Я использую MAMP 2.1.3 и PHP 5.3.15.
Возможный дубликат [Как изменить размер PNG с прозрачностью в PHP?] (Http://stackoverflow.com/questions/279236/how-do-i-resize-pngs-with-transparency-in-php) – Danack
Я пробовал решения, приведенные в этом сообщении (и многие другие). Они не работали вообще, и я не знаю, почему. – user2458399