2011-09-21 17 views
6

Kiedy należy użyć następującego polecenia ghostscript generować miniatury jpg z plików PDF, jakość obrazu jest często bardzo słaba:Jak przekonwertować plik PDF na JPEG w niskiej rozdzielczości (ale dobrej jakości)?

gs -q -dNOPAUSE -dBATCH -sDEVICE=jpeggray -g465x600 -dUseCropBox -dPDFFitPage -sOutputFile=pdf_to_lowres.jpg test.pdf 

Natomiast, jeśli mogę użyć Ghostscript do generowania wysokiej rozdzielczości PNG, a następnie użyć mogrify aby przekonwertować high-res png na jpg o niskiej rozdzielczości, otrzymuję całkiem dobre wyniki.

gs -q -dNOPAUSE -dBATCH -sDEVICE=pnggray -g2550x3300 -dUseCropBox -dPDFFitPage -sOutputFile=pdf_to_highres.png test.pdf 
mogrify -thumbnail 465x600 -format jpg -write pdf_to_highres_to_lowres.jpg pdf_to_highres.png 

Czy istnieje sposób na osiągnięcie dobrych wyników z pominięciem przejściowego pliku pdf -> high-res png? Muszę to zrobić dla dużej liczby plików pdf, więc staram się zminimalizować czas obliczeń.

Oto linki do zdjęć mowa powyżej:

  1. test.pdf
  2. pdf_to_lowres.jpg
  3. pdf_to_highres.png
  4. pdf_to_highres_to_lowres.jpg
+0

Spójrz na [ta pomocna odpowiedź] (https://serverfault.com/a/797110/168205), może to naprawić problem bez korzystania w ogóle z Ghostscript. To zrobiło dla mnie. – likeitlikeit

Odpowiedz

5

Jedna opcja, która wydaje się znacznie poprawić wydajność: -dDOINTERPOLATE. Oto co mam przez uruchomienie samego polecenia, jak ty, ale z opcją -dDOINTERPOLATE:

JPEG with -dDOINTERPOLATE

Nie jestem pewien, co interpolation Metoda ta wykorzystuje, ale wydaje się dość dobre, zwłaszcza w porównaniu do wyników bez niego .

P.S. Rozważ odtwarzanie obrazów PNG (-sDEVICE=pnggray) zamiast JPEG. W przypadku większości dokumentów PDF (które mają zazwyczaj tylko kilka jednolitych kolorów) jest to wybór more appropriate.

+0

+1 dla "Rozważ tworzenie obrazów PNG", nie ma srebrnych pocisków w kompresji obrazu, a jpeg nie jest dobrym wyborem dla obrazów z tekstem lub ogólnie o wysokim kontraście. – yms

+0

Gdybym mógł, zagłosowałbym 100 razy tą odpowiedzią !! Po dniach i dniach rozwiązaniem było -dDOINTERPOLATE – David

3

Twój PDF wygląda to tylko otoki wokół JPEG już.

Spróbuj użyć programu pdfimages z xpdf, aby wyodrębnić rzeczywisty obraz zamiast renderowania do pliku.

+1

To może zadziałać w przypadku tego konkretnego pliku testowego, ale mam nadzieję na bardziej niezawodne rozwiązanie, które działa, nawet jeśli plik PDF nie owija pojedynczego obrazu. –

Powiązane problemy