Ich habe überall nach wie Alpha richtig zu verwalten, wenn ich die Größe eines PNG ändern. Ich habe es geschafft, Transparenz zu schaffen, aber nur für Pixel, die komplett transparent sind. Hier ist mein Code:Größe der Bilder mit Transparenz in 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);
Beginnend mit dieser Quelle Bild:
Das skalierte Bild sieht wie folgt aus:
Die Lösung für fast jedem Forum Post I Habe mir zu diesem Thema etwas angesehen, sagen wir mal so:
imagealphablending($dst_image, false);
$transparent = imagecolorallocatealpha($dst_image, 0, 0, 0, 127);
imagefill($dst_image, 0, 0, $transparent);
Die Ergebnisse aus diesem Code nicht überhaupt jede Alpha zu retten: Gibt es
eine andere Lösung? Fehle ich etwas mit dem Alpha-Blending? Warum sollte das für alle anderen funktionieren, aber völlig fehlschlagen für mich? Ich benutze MAMP 2.1.3 und PHP 5.3.15.
mögliche Duplikate von [Wie skaliere ich PNGs mit Transparenz in PHP?] (Http://stackoverflow.com/questions/279236/how-do-i-resize-pngs-with-transparency-in-php) – Danack
Ich habe die in diesem Beitrag (und vielen anderen) gegebenen Lösungen ausprobiert. Sie haben überhaupt nicht funktioniert und ich bin mir nicht sicher warum. – user2458399