У меня есть приложение, которое создает очень хорошие графики данных в PostScript с размером букв и в альбомной ориентации.Пример входного файла: http://febo.com/uploads/blip.ps. [Примечание: это изображение правильно отображается в средстве просмотра, но преобразование PNG выходит с изображением вбок.] Мне нужно преобразовать эти файлы PostScript в изображения PNG, которые уменьшены и повернуты на 90 градусов для веб-презентации.
Я хочу сделать это с помощью ghostscript и без каких-либо других внешних инструментов, поскольку программа преобразования будет использоваться наи системы Windows, и Linux, и gs, кажется, общий знаменатель.(Я создаю Perl-скрипт с функцией «PS2png», которая будет вызывать gs, но я не думаю, что это имеет отношение к вопросу.)
Я искал в Интернете и провел пару днейпытаясь изменить примеры, которые я нашел, но ничего из того, что я пробовал, ничего не делает: (а) вращение, (б) изменение размера, (в) сохранение соотношения сторон и (d) избегание отсечения.
Я сделалнайдите пример, который вставляет команду «scale» в поток постскриптума и, кажется, хорошо работает для масштабирования изображения до желаемого размера при сохранении соотношения сторон.Но я не могу найти способ повернуть изображение с измененным размером так, чтобы, например, постскриптный ввод 601 x 792 точек (2504 x 3300 пикселей) стал выходным сигналом 800 x 608 пикселей.
Я ищу ghostscript / postscript fu, который я могу передать в командную строку gs для достижения этой цели.
Я пробовал командные строки gs с различными комбинациями -dFIXEDMEDIA, -dFitPage, -dAutoRotatePages = / None или / All, -c "<> setpagedevice", изменение -dDISPLAYWIDTHPOINTS и -dDISPLAYHEIGHTPOINTS, -g [ширина] x [высота], -dUseCropBox с повернутыми координатами и другими вещами, которые я забыл,Ничто из этого не сработало, хотя меня не удивит, если есть волшебная комбинация некоторых из них, которая сработает.Я просто не смог его найти.
Вот код ядра, который производит масштабированный, но не повернутый вывод:
## "$molps" is the input ps file read to a variable
## insert the PS "scale" command
$molps = $sf . " " . $sf . " scale\n" . $molps;
$gsopt1 = " -r300 -dGraphicsAlphaBits=4 -dTextAlphaBits=4";
$gsopt1 = $gsopt1 . " -dDEVICEWIDTHPOINTS=$device_width_points";
$gsopt1 = $gsopt1 . " -dDEVICEHEIGHTPOINTS=$device_height_points";
$gsopt1 = $gsopt1 . " -sOutputFile=" . $outfile;
$gscmd = "gs -q -sDEVICE=pnggray -dNOPAUSE -dBATCH " . $gsopt1 . " - ";
system("echo \"$molps\" \| $gscmd");
$ device_width_points и $ device_height_points вычисляются путем взятияисходный размер изображения и применение масштабного коэффициента $ sf.Я буду благодарен всем, кто может показать мне, как это сделать.Спасибо!