2015-01-23 2 views
2

Я хочу создать файл png из файла eps с помощью ghostscript. Но я хочу поставить его на большее изображение и точно контролировать, где и как большой (это означает, что я хочу масштабировать и перемещать его). Я предполагаю, что нужно добавить несколько команд postscript в аргументе «-c» для ghostscript. Я пробовал такие аргументы, как -c "0.8 0.8 scale" и -c "1 1 moveto". Но в этом случае файл png не был создан, без другого сообщения об ошибке. Мой вопрос: каков правильный способ сделать это?Ghostscript: Как я могу перемещать/масштабировать eps-контент на целевом изображении?

Пример команды, используемый мной:

gswin32c.exe -dPARANOIDSAFER -r288 -dDEVICEHEIGHTPOINTS = 195 -dDEVICEWIDTHPOINTS = 256 -c "1 1 MoveTo" -sDEVICE = png16m -o "testout.png" «вход. EPS»

ответ

1

Вы должны прочитать Adobe EPSF specification

особенно раздел 2.6 "Графика состояние". Вам нужно будет использовать масштаб, как вы предлагаете, и moveto. Обратите внимание: 1 1 moveto перемещает текущую точку на 1/72 дюйма, поэтому, вероятно, вы не сможете увидеть какую-либо разницу. Хотя вы использовали ключ -c для представления PostScript, вы не выполнили его с -f, чтобы вернуться к обработке командной строки.

Try:

gswin32c.exe -sDEVICE=png16m -r288 -dDEVICEHEIGHTPOINTS=195 -dDEVICEWIDTHPOINTS=256 -sOutputFile="testout.png" -c "72 72 moveto" -f "input.EPS" 

Это должно двигаться изображаемого образа вверх и вправо на один дюйм каждый, который вы должны быть в состоянии видеть. Использование -sOutputFile, а не -o на случай, если вы вернете что-то обратно на stdout. -o подразумевает -dBATCH и -dNOPAUSE.

+0

Большое спасибо, кажется, работает таким образом. Одно дополнение: «moveto», похоже, не помогает, но «переводить» делает. «масштаб» также работает. –

+0

Да, я не думал четко, вам нужно перевести, чтобы сдвинуть начало координат так, чтобы 0,0 находилось там, где вы хотите, чтобы внизу слева от EPS. Вы должны также учитывать BoundingBox, который находится в комментариях заголовка. – KenS