Wyciągam włosy z głowy.Konwersja plików PDF na JPG w wysokiej jakości za pomocą PHP i ImageMagick
Mam plik PDF o rozdzielczości 300 DPI, który chcę przekształcić w JPG o rozdzielczości 300 DPI, czyli 2550 x 3300. Mówi mi się, że ImageMagick może to zrobić, więc dostaję ImageMagick do pracy, ale zwraca tylko JPG o rozmiarze około 1/5 oryginalnego rozmiaru PDF.
To nie jest obraz źródłowy - zrobiłem to z kilkoma wysokiej jakości plikami PDF i wszystkie mają ten sam problem.
Po szorowania StackOverflow pomysłów, to co wymyśliłem używać:
$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();
Ale to nadal nie działa.
Próbowałem również użyć $ img-> resizeImage(), aby zmienić rozmiar JPG, ale potem wychodzi na naprawdę złej jakości, jeśli ma odpowiedni rozmiar.
Totally stumped. Doceniam Twoją pomoc!
Jeśli kładę setImageResolution pierwsza klasa nie został jeszcze ogłoszony. Jeśli wykonam $ im = new imagick(), następnie $ im-> setImageResolution, a następnie $ im-> readImage ($ srcimg), otrzymuję następujący błąd: Błąd krytyczny: Niepostrzeżenie wyjątek "ImagickException" z komunikatem "Nie można przetworzyć pustego Imagick'a" object 'in ... –
spróbuj użyć '$ im-> setResolution()' na pustym obiekcie (patrz noty dla 'Imagick :: setResolution' na instrukcji) – dakdad
Tak - właśnie to zrobiłem i mam to do pracy, chociaż potrzebne było tylko 300 300. Sztuczka polegała na zmianie kolejności i użyciu setResolution zamiast setImageResolution. Dzięki! –