2016-04-08 6 views
0

Ich versuche, ein pdf zu einem JPEG, schneiden Sie die Whitespaces um den Inhalt zu konvertieren und zu 300x600 In PHP ImageMagick die Größe 6.7.7-10Warum schaltet Imagick die Hintergrundfarbe des Schalters um?

hier ist mein Code:

$im = new \Imagick(); 
$im->setBackgroundColor("white"); 
$im->readimage($url); 
$im->setImageFormat("jpeg"); 
$im->trimImage(0); 
$im->resizeImage(300, 600, Imagick::FILTER_LANCZOS, 0.9); 
$im->writeImage($tmpFilePath); 
$im->clear(); 
$im->destroy(); 

hier die PDF
http://cs1.fuman.de/file.php/1AOrL6-PzT71Z-dk0000-CsjquC und hier die resultierende JPG ist http://cs1.fuman.de/file.php/1AOrL0-kWAl8P-ml0000-xAhOiw

Wer weiß, was falsch ist hier los?

Vielen Dank im Voraus JD

+0

Ausprobieren Verwenden '$ im-> setResolution (300.600);' 'statt $ im-> resizeImage (300, 600, Imagick :: FILTER_LANCZOS, 0,9);' – walkingRed

+0

Dies behandelt in der Tat das Problem mit schwarzem Hintergrund, aber das resultierende Bild ist 223 x 421 –

+0

Dann ändern Auflösung um eins zu korrigieren: D – walkingRed

Antwort

0

Ich weiß nicht, warum die Hintergrundfarbe ignoriert wird. Ich denke, dass es mit JPEG zu tun hat, kein Konzept einer "Hintergrund" -Farbe zu haben, und so, wenn das Bild von Alpha zu Alpha umgewandelt wird, passieren schlimme Dinge.

ich diesen Code schlage vor, mit:

$imagick = new \Imagick(); 

// Make the image be large when read from PDF so have decent quality later 
$imagick->setResolution(92, 92); 

// only use the first page of the PDF 
$imagick->readimage("./orig.pdf[0]"); 

// Make a white background imge 
$canvas = new Imagick(); 
$canvas->newPseudoImage(
    $imagick->getImageWidth(), 
    $imagick->getImageHeight(), 
    'canvas:white' 
); 

// Need to use png format to keep alpha channge 
$imagick->setImageFormat('png'); 

// Composite our image, into the white background 
$canvas->compositeImage($imagick, \Imagick::COMPOSITE_ATOP, 0, 0); 
$canvas->resizeImage(300, 600, Imagick::FILTER_LANCZOS, 1); 
$canvas->setImageFormat('png'); 
$canvas->writeImage("output.png");