Podczas zmiany rozmiaru png sprawdziłem, jak poprawnie zarządzać alfą. Udało mi się uzyskać przezroczystość, ale tylko dla pikseli, które są całkowicie przezroczyste. Oto mój kod:Zmiana rozmiaru obrazów z przezroczystością w 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);
Począwszy od tego obrazu źródłowego:
o zmienionym rozmiarze wygląda tak:
rozwiązanie dla niemal każdego forum postu Rozważaliśmy ten problem, powiedzmy, aby zrobić coś takiego:
imagealphablending($dst_image, false);
$transparent = imagecolorallocatealpha($dst_image, 0, 0, 0, 127);
imagefill($dst_image, 0, 0, $transparent);
Wyniki tego kodu nie oszczędzając żadnego alfa w ogóle:
Czy istnieje inne rozwiązanie? Czy brakuje mi czegoś z mieszaniem alfa? Dlaczego ta praca dla wszystkich innych, ale dla mnie zawiodła? Używam MAMP 2.1.3 i PHP 5.3.15.
możliwy duplikat [Jak zmienić rozmiar pngs z przezroczystością w PHP?] (Http://stackoverflow.com/questions/279236/how-do-i-resize-pngs-with-transparency-in-php) – Danack
Próbowałem rozwiązań podanych w tym poście (i wielu innych). Oni w ogóle nie pracowali i nie jestem pewien dlaczego. – user2458399