Создать изображение с размером страницы и разрешением? - PullRequest
4 голосов
/ 06 мая 2011

Я бы хотел использовать ImageMagick convert для создания растровых изображений на лету.

Однако я хотел бы указать размер страницы (скажем, A4 - который будет внутренне указан в дюймах / сантиметрах), а затем указать разрешение в DPI - вместо непосредственного указания размера изображения в пикселях.,

Из анализа параметров convert я догадался, что следующая командная строка подойдет:

convert -page A4 -density 300x300 xc:white -pointsize 72 -draw "text 25,60 'test'" test.png

... к сожалению, это генерирует изображение .png, котороеимеет размер 1x1 пикселей.

Возможно ли вообще то, что я хочу сделать с convert?Если нет, есть ли другие инструменты, которые могут быть использованы для этой цели?

1 Ответ

3 голосов
/ 09 мая 2011

Я думаю, самое близкое, что я мог бы получить, это (ImageMagick 6.6.2-6):

convert xc:white -page A4 myout.pdf
convert -density 300x300 myout.pdf -pointsize 72 -draw "text 25,235 'test'" myout.png

Обратите внимание, что:

  • Первая команда генерирует правильную страницуразмер только для pdf (но не для ps)
  • convert не может «рисовать» в векторном файле, например pdf
  • Во второй команде должны быть заданы аргументыв этом порядке - так, чтобы PDF был взят фоном с известным размером, на котором нарисован текст.

Кстати, чтобы получить размер в пикселях при заданной плотности файла PDF:

$ convert myout.pdf -format "%[fx:round(w)]x%[fx:h]" info:
595x842
$ convert -density 300x300 myout.pdf -format "%[fx:w]x%[fx:h]" info:
2479x3508

Я думаю, это означает, что то, что я хотел сделать, невозможно водиночная convert командная строка ...

Вот также код, который, кроме того, использует градиент:

convert xc:white -page A4 myout.pdf
TSIZE=$(convert -density 300x300 myout.pdf -format "%[fx:w]x%[fx:h]" info:)
convert -density 300x300 -size $TSIZE myout.pdf gradient:\#4b4-\#bfb -pointsize 72 -draw "text 25,235 'test'" -flatten myout.png

Обратите внимание, что размер изображения,при заданной плотности, должны быть извлечены в отдельном шаге - как это требуется для градиента;также обратите внимание на использование -flatten (без него генерируется несколько файлов png).

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...