php imagick konvertieren von PNG zu jpg
$image = "[...]"; //binary string containing PNG image
$file = fopen('image.tmp', 'wb');
fputs($file, $image);
fclose($file);
$image = new Imagick('PNG:image.tmp');
$image->thumbnailImage($width, $height);
$image->setImageFormat('jpg');
$image->setCompressionQuality(97);
$image->writeImage('image.jpg');
Den oben funktioniert nicht und zeigt mir ein Schwarzes Bild für diese Bild. Wenn dabei statt
[...]
$image->setImageFormat('png');
$image->setCompressionQuality(97);
$image->writeImage('image.png');
alles ist wieder gut. Ich denke, es hat etwas zu tun mit transparentem hintergrund, die nicht verfügbar im JPG-format. Kann jemand helfen um dieses Problem zu lösen (imagick ist nicht sehr gut dokumentiert, so dass ich don T wissen, wie um mir selbst zu helfen).
InformationsquelleAutor rabudde | 2011-07-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung gefunden:
flattenImages
Methode setzt die Seite an die Letzte... Danke @rabudde!InformationsquelleAutor rabudde
Anderen Weg, um zu konvertieren, transparent png -, jpg -, wie erwähnt, in Imagick::flattenImages:
Wie die Zeit vergeht
flattenImages()
wurde als veraltet markiert.Statt der obigen Zeile verwenden:
InformationsquelleAutor Bastien
Können Sie
setBackgroundColor
um die Standard-Hintergrundfarbe, um etwas anderes als schwarz. Die PNG-Transparenz wird durch die Hintergrundfarbe ersetzt beim speichern als JPG.Bearbeiten: Verwenden Sie es wie so:
Sie brauchen, um passieren eine ImagickPixel Objekt, nicht eine Farbe, string, wenn Sie haben Imagick <= 2.1. Siehe meine bearbeitete Antwort.
Ich habe
setBackgroundColor
nur nach dem Aufrufnew Imagick()
. Aber das scheint nicht zu haben keine Wirkung. Ich bin mit PHP 5.3.6, ImageMagick 6.7.0, Imagick 3.1.0.Aufruf
exec("convert png.png -resize 500x400 -background white -flatten png_small.jpg")
perfekt funktioniert, aber warum nicht in PHP mit$image->setBackgroundColor(new ImagickPixel('#FFFFFF'));$image->flattenImages();
?InformationsquelleAutor Sander Marechal
Versuchen Sie,
$image->setBackgroundColor(0xFFFFFF);
nach$image = new Imagick('PNG:image.tmp');
PHP Fatal error: Uncaught exception 'ImagickException' with message 'Invalid parameter provided'
mit '#ffffff', statt nicht zu einem Fehler führen aber nicht zu helfen, auch.setImageBackgroundColor
funktioniert nicht allzuInformationsquelleAutor binaryLV