Ho cercato dappertutto come gestire correttamente alpha quando sto ridimensionando un png. Sono riuscito a farlo mantenere la trasparenza, ma solo per i pixel che sono completamente trasparenti. Qui è il mio codice:Ridimensiona le immagini con trasparenza 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);
A partire da questa fonte immagine con:
L'immagine ridimensionata appare così:
La soluzione per quasi tutti i forum post ho 'ho guardato su questo problema dire di fare qualcosa di simile:
imagealphablending($dst_image, false);
$transparent = imagecolorallocatealpha($dst_image, 0, 0, 0, 127);
imagefill($dst_image, 0, 0, $transparent);
I risultati di questo codice non riesce a salvare qualsiasi alpha di sorta:
C'è qualche altra soluzione? Mi manca qualcosa con l'alpha blending? Perché dovrebbe funzionare per tutti, ma fallire completamente per me? Sto usando MAMP 2.1.3 e PHP 5.3.15.
possibile duplicato di [Come ridimensionare i png con trasparenza in PHP?] (Http://stackoverflow.com/questions/279236/how-do-i-resize-pngs-with-transparency-in-php) – Danack
Ho provato le soluzioni fornite in quel post (e molti altri). Non hanno funzionato affatto e non sono sicuro del perché. – user2458399