2016-10-19 5 views
0

Для преобразования изображений в формате pdf/eps в пикселях мы используем ImageMagick. При преобразовании PDF команда может выглядеть следующим образом:Как ограничить размер растеризации PDF при использовании ImageMagick/Ghostscript

convert -verbose -density 150 -trim -colorspace sRGB input.pdf -quality 90 -flatten -sharpen 0x1.0 output.png 

Однако вход PDF (который содержит только несколько путей) имеет заданный размер 300см на 200см, и Ghostscript не нравится, и создает огромный png. Многословный выход ImageMagick показывает это:

"gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r150x150" "-sOutputFile=/tmp/magick-3036AW7mUOP25w7J%d" "-f/tmp/magick-3036PxgJinljqMwV" "-f/tmp/magick-30369hcErAROr7V6" 
/tmp/magick-3036AW7mUOP25w7J1 PNG 17717x11811 17717x11811+0+0 8-bit sRGB 1.003MB 3.910u 0:03.929 
input.pdf PNG 17717x11811 17717x11811+0+0 16-bit sRGB 1.003MB 0.000u 0:00.000 

PNG 17717x11811. Огромный. Мне нужно только изображение 256x256.

Я попытался геометрия (-geometry 256x256) варианты и параметр плотности (перед именем файла, -плотностью 150) в различных конфигурациях, но не изменяет выход Ghostscript, например:

convert -verbose -density 150 -trim -geometry 265x265 -colorspace sRGB input.pdf -quality 90 output.png 
"gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r150x150" "-sOutputFile=/tmp/magick-3233p3ofct0fiy5T%d" "-f/tmp/magick-3233Rads_vSSpKa6" "-f/tmp/magick-3233LQMrrEFgT0fi" 
/tmp/magick-3233p3ofct0fiy5T1 PNG 17717x11811 17717x11811+0+0 8-bit sRGB 1.003MB 3.800u 0:03.799 
input.pdf PNG 17717x11811 17717x11811+0+0 16-bit sRGB 1.003MB 0.000u 0:00.000 
input.pdf=>output.png PNG 17717x11811=>265x38 321x213+28+65 16-bit sRGB 7.96KB 1.080u 0:00.559 

Как вы можете определить ограничения для Ghostscript при использовании ImageMagick?

+1

Попробуйте 'convert ... input.pdf ... -resize 256x256 result.png' используя' -resize', а не '-geometry' –

ответ

0

Я бы не сказал: «Ghostscript не нравится это», если размер носителя огромен, тогда, конечно, Ghostscript создает огромный PNG, что еще вы ожидали от него?

300 см - 118,11 дюймов, что при 150 dpi работает на растровом 17716,5 или округлено до 17717 пикселей.

200 см - 78,74 дюйма, при 150 dpi, что составляет 11811 пикселей.

Если вы хотите его с меньшим разрешением, измените настройку -r («плотность» в ImageMagick). Например, вы можете установить «плотность 10», предположительно, что создаст файл 1181x787. Чтобы получить 256x256, вам нужно установить разрешение ~ 2 dpi. Разумеется, вы можете обнаружить, что довольно сложно увидеть какие-либо детали, когда результат будет таким грубым.

В качестве альтернативы вы можете указать Ghostscript размер носителя, который вы хотите, и сообщить «FIXEDMEDIA», чтобы он не изменялся в соответствии с запросами программы PostScript или файла PDF.

-g устанавливает размеры носителя в пикселях, а -dFIXEDMEDIA сообщает Ghostscript, что носитель исправлен. Вы почти наверняка захотите также установить -dFitPage, или вы получите только крошечную часть нижнего левого угла. Вам также понадобится не комплект -r.

-dFIXEDMEDIA -g и -r описаны в use.htm в Ghostscript documentation

В зависимости от возраста вашей установки Ghostscript вы не можете быть в состоянии использовать -dFitPage, но вы, возможно, придется использовать -dPDFFitPage ,

Почти наверняка вы захотите сделать это из командной строки, используя Ghostscript вместо ImageMagick, я полагаю, что создание командной строки в IM будет затруднительным.

Смежные вопросы