Frage

mit Hey einige Probleme versuchen, Transparenz auf einem png zu halten, wenn ich ein Miniaturbild aus es schaffen, jemand Erfahrung mit diesem? jede Hilfe wäre toll, hier ist was ich derzeit tue:

$fileName= "../js/ajaxupload/tees/".$fileName;

list($width, $height) = getimagesize($fileName);

$newwidth = 257;
$newheight = 197;

$thumb = imagecreatetruecolor($newwidth, $newheight);
imagealphablending($thumb, true);
$source = imagecreatefrompng($fileName);
imagealphablending($source, true);

imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

imagesavealpha($thumb, true);
imagepng($thumb,$newFilename);
War es hilfreich?

Lösung

Ich hatte Erfolg es wie dies in der Vergangenheit zu tun:

$thumb = imagecreatetruecolor($newwidth, $newheight);
imagealphablending($thumb, false);
imagesavealpha($thumb, true);  

$source = imagecreatefrompng($fileName);
imagealphablending($source, true);

imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

imagepng($thumb,$newFilename);

Ich fand die Ausgabebildqualität viel besser mit imagecopyresampled() als imagecopyresized()

Andere Tipps

Vergessen Sie die Farbtransparenz Index, es funktioniert nie in allen Rendering-Produkte. Statt eine Alpha-Schicht-Maske verwenden:

$image = imagecreatetruecolor($size, $size);

imagealphablending($image, false);
imagesavealpha($image, true);

$trans_layer_overlay = imagecolorallocatealpha($image, 220, 220, 220, 127);
imagefill($image, 0, 0, $trans_layer_overlay);

imagecopyresized unterstützt keine Transparenz richtig.

imagecopymerge tut, aber es ist die Größe nicht.

Die Lösung? Sie würden vermutlich manuell das Ding am Ende Ändern der Größe.

Diese Funktionen Zugriff auf die zugrunde liegende gdlib Bibliothek, die ein feines Spielzeug, aber nicht etwas, das für schöne Ergebnisse macht. Wenn Sie die Möglichkeit haben, verwenden Sie imagemagick statt. Der Nachteil ist, dass es derzeit keine gute php-Bindungen, so müssen Sie es über den Shell zuzugreifen, die Sie in der Regel nicht bei gemeinsamen Rechnern erlaubt.

Siehe dycey Antwort auf „Wie kann ich die Größe ... ". Im Wesentlichen müssen Sie den gesamten Hintergrund mit Transparenz füllen, bevor Sie irgendwelche anderen Operationen durchführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top