2013-03-06 12 views
5

Ich reiße mir die Haare aus.Konvertieren von PDF zu hoher Qualität JPG mit PHP und ImageMagick

Ich habe eine 300 DPI PDF, die ich in eine 300 DPI JPG, die 2550x3300 ist. Mir wurde gesagt, dass ImageMagick dies tun kann, damit ImageMagick funktioniert, aber es gibt nur ein JPG zurück, dessen Größe etwa 1/5 der ursprünglichen PDF-Größe beträgt.

Es ist nicht das Quellbild - ich habe es mit mehreren hochwertigen PDFs gemacht und alle haben das gleiche Problem.

Nach Stackoverflow für Ideen zum Scheuern, ist das, was ich mit benutzen kam:

$im = new imagick($srcimg); 
$im->setImageResolution(2550,3300); 
$im->setImageFormat('jpeg'); 
$im->setImageCompression(imagick::COMPRESSION_JPEG); 
$im->setImageCompressionQuality(100); 
$im->writeImage($targetimg); 
$im->clear(); 
$im->destroy(); 

Aber es funktioniert immer noch nicht.

Ich habe auch versucht, mit $ img-> resizeImage(), um die Größe des JPG zu ändern, aber dann kommt es zu wirklich schlechter Qualität, wenn die richtige Größe.

Total ratlos. Schätze deine Hilfe!

Antwort

6

Sie müssen die Auflösung vor dem Lesen des Bildes einstellen. Bitte see this comment on the manual - sehen, ob das funktioniert.

+0

Wenn ich zuerst setImageResolution gesetzt habe, wurde die Klasse noch nicht deklariert. Wenn ich $ im = new imagick(), dann $ im> setImageResolution, dann $ imp> readImage ($ srcimg) mache, erhalte ich folgende Fehlermeldung: Schwerwiegender Fehler: Uncaught-Ausnahme 'ImagickException' mit Nachricht 'Kann leeres Imagick nicht verarbeiten object 'in ... –

+1

versuche $ 'imim> setResolution()' auf das leere Objekt zu verwenden (siehe 'Imagick :: setResolution' im Handbuch) – dakdad

+0

Ja - ich habe es einfach gemacht und ich habe es geschafft zu arbeiten, obwohl nur 300.300 benötigt wurde. Der Trick bestand darin, die Reihenfolge zu ändern und setResolution anstelle von setImageResolution zu verwenden. Vielen Dank! –

4

Dies wäre der richtige Weg, die Qualität wird verbessert.

$im = new imagick(); 
$im->setResolution(300, 300); 
$im->readImage($srcimg); 
$im->setImageFormat('jpeg'); 
$im->setImageCompression(imagick::COMPRESSION_JPEG); 
$im->setImageCompressionQuality(100); 
$im->writeImage($targetimg); 
$im->clear(); 
$im->destroy(); 
Verwandte Themen