Ghostscript создает огромные изображения, на порядок больше пикселей, чем ожидалось - PullRequest
4 голосов
/ 18 октября 2011

Я использую эту команду Ghostscript для преобразования PDF в изображения:

gs \
 -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT \
 -dCOLORSCREEN \
 -dDOINTERPOLATE \
 -dMaxBitmap=500000000 \
 -dNumRenderingThreads=4 \
 -dAlignToPixels=0 \
 -dGridFitTT=0 \
 -dTextAlphaBits=4 \
 -dGraphicsAlphaBits=4 \
 -sDEVICE=jpeg \
 -dFirstPage=1 \
 -dDEVICEWIDTHPOINTS=1654 \
 -dDEVICEHEIGHTPOINTS=2333 \
 -dDEVICEXRESOLUTION=1654 \
 -dDEVICEYRESOLUTION=2333 \
 -sOutputFile=d:\images\%01d.jpg \
  d:\test.pdf

Преобразует изображения, но изображения имеют размер 13675x27280 пикселей. Я хочу изображения в 1654x2333px. Что я делаю не так?

Ответы [ 2 ]

9 голосов
/ 18 октября 2011

Вы указали ширину и высоту носителя в точках PostScript, из которых 72 дюйма, а затем задали огромное разрешение (1654x2333), определенное в точках на дюйм /

Размерноситель пропорционален только размеру выходного изображения в пикселях, поскольку это также зависит от разрешения.Если я установлю носитель на 72 точки (1 дюйм) и разрешение 300 точек на дюйм, то полученное изображение будет 300 пикселей.Если я установлю его на 600 dpi, тогда изображение будет 600 пикселей.

Итак, вы сказали, что носитель составляет 1654 точки (22,97222 дюйма) на 2333 точки (32,402777 дюймов. Затем вы сказали разрешение в xнаправление 1654 точек на дюйм. Таким образом, размер (в пикселях) в направлении х составляет 22,97222 * 1654 = 37966,055. Аналогичные вычисления дают размер у 75596,68.

Хотя это не тот размер, который вы указалиВероятно, это связано с тем, что вы не установили -dFIXEDMEDIA, поэтому размер носителя в файле PDF переопределяет размер носителя, указанный в командной строке. Принимая разрешение и размер, это означает, что ширина носителя составляет 13675/1654 = 8,25 дюйма.и высота составляет 11,69 дюйма. Ваш файл PDF изначально использовал формат страницы A4.

Вам необходимо указать разрешение и размер страницы, которые при расчете вместе дают вам размер впикселей, которые вы хотите. Вам также нужно будет установить -dFIXEDMEDIA, чтобы файл PDF не перекрывал указанный размер.

Наконец, вы, вероятно, захотите указать -dPDFFITPAGE так, чтобы PDF масштабировался так, чтобы он подходил для носителя, предполагая, что это именно то, что вы на самом деле хотите.

В этом случае просто установите разрешение 200 dpi,и игнорируя другие пункты, вы получите результат, близкий к тому, что вы хотите (-r200).Очевидно, вам придется удалить ключи -dDEVICERESOLUTION.

5 голосов
/ 03 ноября 2011

Кен объяснил все хорошо, но я заметил, что у него неправильный регистр на одном из переключателей.

Параметр для подгонки PDF к (фиксированному) размеру страницы - -dPDFFitPage (не все заглавные буквы),Все переключатели Ghostscript чувствительны к регистру, если документация не предусматривает более одной версии.

Также опция -g_ x _ устанавливает размер изображения (размер страницы) непосредственно в пикселях и автоматически устанавливает параметр -dFIXEDMEDIA.

...