Страницы

Поиск по вопросам

Показаны сообщения с ярлыком imagemagick. Показать все сообщения
Показаны сообщения с ярлыком imagemagick. Показать все сообщения

пятница, 20 марта 2020 г.

Скриншот окна браузера

#php #imagemagick #javascript #perl


Можно использовать:
php, perl, imagemagick, gd, shell
Нельзя использовать:
Сторонние библиотеки и программы. Нужна именно суть реализации подобного.
Задача:
Сделать скриншот урла по нажатию на кнопку в браузере.
Пример:



Как обустроить frontend я знаю и с этим проблем никаких нет. Вопрос как можно указанными
средствами сделать скриншот с урла.
Идеи вроде поставить vm не подходят, нужно делать все моментально, запрос ушел -
ответ пришел, без особых задержек.
Идеи гугла:

Через shell, используя firefox

bash:
firefox URL
scrot -d 5 OUT.png

Недостатки: если на сервере нет x-ов или прав у юзера нет, то все обломается

Через IE COM

Реализацию можно найти на хабре или воспользоваться php.net
Недостатки: только под винды, а нужно под линух
Надеюсь, что решение есть, просто я не умею использовать гугл :)    


Ответы

Ответ 1



Не пойму я, как это вы хотите обойтись без «сторонних библиотек и программ» — самому полностью писать рендерную машину? Но раз ImageMagick вам не сторонний, то полагаю, и webkit-qt тоже сойдет :) Если все-таки есть иксы и можно использовать браузер, то лучше коннектиться к файрфоксу через MozRepl. Если хочется обойтись без иксов (точнее, без рисования на экране), то можно задействовать xvfb или vncserver. Если хочется обойтись без целого браузера, то можно брать какой-нибудь headless движок: phantomjs, watin, htmlunit Вот вам пример для ориентировки: CutyCapt. Удачи.

суббота, 11 января 2020 г.

Преобразование SVG в векторные PDF,PS

#batik #pdf #php #imagemagick #svg


Добрый день, сообщество!
Что имеется: программно сформированный на сервере валидный SVG, внутри в основном
path. Серверный код на php, поэтому решение предпочтительно для php.
Что требуется: получить PDF, PS, а также PSD(по возможности) содержащие ВЕКТОРНЫЙ
рисунок такой же как в исходном SVG. В случае PDF это будет встроенный SVG, для остальных
не знаю.
Что пробовал: MagickWand(ImageMagick) - с удовольствием конвертирует, практически
что угодно и во что угодно, особенно удачно получается PNG (даже с прозрачностью).
Но есть одна большая проблема, которая все плюсы сводит на нет. При конвертации SVG
в PDF, EPS, PS, PSD, растрирует исходный рисунок.
Что уже посмотрел: но не совсем разобрался:
 1. Apache Batik, не совсем понятно как работать и что будет на выходе. Можно конечно
через exec запускать яву, но как к этому отнесется хостер, пока не известно.

Apache FOP, очень интересный инструмент, уже практически разобрался со всеми преобразованиями
и почти получил файл .fo, все примитивы преобразуются кроме, нужного path, которого,
почему-то не было в найденной схеме. И что дальше делать, снова exec и java?

В общем, может кто уже сталкивался с подобной темой, буду очень благодарен за инфу.    


Ответы

Ответ 1



Обратите внимание на TCPDF TCPDF является PHP-классом генерации PDF-документов, не требующим внешних расширений. Этот класс встраивает SVG непосредственно в векторном виде в PDF, но при желании можно и преобразовать его в растр с помощью того же ImageMagic. Пример использования класса. Пример полученного PDF-документа с SVG-графикой.

воскресенье, 8 декабря 2019 г.

Как сделать рваные края в ImageMagick?

#imagemagick


Нужно сделать рваные края на картинке, пример есть тут. Но сделать надо в ImageMagick
и независимо от того, какого размера изображение. Подскажите, как это можно реализовать.
    


Ответы

Ответ 1



1. bordereffects Эффект, который понадобился ув-му автору вопроса, например, в Greenshot называется Torn edge. Его можно добиться и при помощи нативных команд ImageMagick, см. пример на официальном сайте (к сожалению, он там только один). Однако писать придётся многовато. На мой взгляд, намного проще использовать скрипт для ImageMagick, называемый bordereffects. Да, на сайте с bordereffects присутствует огромное количество бесплатных скриптов — Fred's ImageMagick Scripts — упрощающих работу с ImageMagick. У пользователей Windows могут возникнуть проблемы с использованием скриптов, поскольку все они написаны под Linux/macOS. Как у меня получилось запустить bordereffects, см. в разделе 3. 2. Демонстрация 1. Ограничения в демонстрационных примерах демонстрируется простой запуск команд в Cygwin терминале, в примерах преобразование происходит только для одного изображения. 2. Torn edge Исходный файл SashaQueen.jpg: Эффект Torn edge в файле SashaMagic.jpg: bordereffects -s 25 -d 1 -c 10 -g 1 -p 1 SashaQueen.jpg SashaMagic.jpg Оптимальные значения опций различны в зависимости от размеров изображений. 3. Примеры опций bordereffects Значения опций, кроме той, о которой идёт речь, остаются такими же, как в примере с Torn edge. -d — density. При больших значениях (в примере -d 50) изображения будут выглядеть так: -g — granularity. При больших значениях (в примере -g 50) изображения будут выглядеть так: -c — curviness. При небольших значениях (в примере -с 1) изображения будут выглядеть так: Подробные описания команд и больше примеров смотрите на сайте bordereffects. 3. Запуск Fred's ImageMagick Scripts в Windows В Cygwin на примере bordereffects. Для остальных скриптов действия примерно те же. 1. Программно-аппаратное окружение Протестировано лично на Windows 10 64-bit Enterprise LTSB EN, ImageMagick 7.0.4-3 Q16 x64 2017-01-07, Cygwin 2.6.1, cyg-get 1.2.1. Для запуска в 64-битных Windows можно использовать и Bash для Windows, однако в Windows LTSB на момент написания данного сообщения Bash не поддерживается. 2. Установка и настройка Устанавливаем Cygwin и cyg-get. Скачиваем bordereffects с официального сайта в папку, которая есть в пользовательской переменной PATH или же добавляем папку с bordereffects в пользовательскую переменную PATH — это удобно делать через Rapid Environment Editor. Открываем файл bordereffects в любом продвинутом текстовом редакторе → делаем, включив поиск/замену регулярными выражениями замену \bconvert\b — magick, поскольку в Windows есть нативная команда convert, → делаем замену \bidentify\b — magick identify → сохраняем файл. 3. Работа в Cygwin Открываем терминал Cygwin — для запуска команд Cygwin нужен специализированный терминал, обычной консолью Windows не обойтись; я запускаю его ярлыком Cygwin64 Terminal из Wox. В терминале Cygwin перемещаемся в папку, где лежат изображения, которые необходимо преобразовать, → проверяем, что всё работает, запуском команды bordereffects, например, bordereffects SashaQueen.jpg SashaMagic.jpg. Если в консоли появляются сообщения, что какая-то команда из скрипта bordereffects не запускается, в предпочтительном для Вас терминале для Windows (уже не в терминале Cygwin) набираем команду cyg-get. Синтаксис: cyg-get firstpackage secondpackage thirdpackage. Например, после запуска bordereffects выяснилось, что у меня отсутствовала утилита bc → установил её командой cyg-get bc. При установке bc вручную с сайта GnuWin у меня возникали баги, связанные с этим интерпретатором, поэтому рекомендовал бы устанавливать недостающие команды через пакетный менеджер cyg-get.

пятница, 7 июня 2019 г.

Скриншот окна браузера

Можно использовать: php, perl, imagemagick, gd, shell Нельзя использовать: Сторонние библиотеки и программы. Нужна именно суть реализации подобного. Задача: Сделать скриншот урла по нажатию на кнопку в браузере. Пример: Как обустроить frontend я знаю и с этим проблем никаких нет. Вопрос как можно указанными средствами сделать скриншот с урла. Идеи вроде поставить vm не подходят, нужно делать все моментально, запрос ушел - ответ пришел, без особых задержек. Идеи гугла: Через shell, используя firefox bash: firefox URL scrot -d 5 OUT.png Недостатки: если на сервере нет x-ов или прав у юзера нет, то все обломается Через IE COM Реализацию можно найти на хабре или воспользоваться php.net Недостатки: только под винды, а нужно под линух Надеюсь, что решение есть, просто я не умею использовать гугл :)


Ответ

Не пойму я, как это вы хотите обойтись без «сторонних библиотек и программ» — самому полностью писать рендерную машину? Но раз ImageMagick вам не сторонний, то полагаю, и webkit-qt тоже сойдет :) Если все-таки есть иксы и можно использовать браузер, то лучше коннектиться к файрфоксу через MozRepl Если хочется обойтись без иксов (точнее, без рисования на экране), то можно задействовать xvfb или vncserver Если хочется обойтись без целого браузера, то можно брать какой-нибудь headless движок: phantomjs, watin, htmlunit Вот вам пример для ориентировки: CutyCapt. Удачи.

суббота, 9 марта 2019 г.

Преобразование SVG в векторные PDF,PS

Добрый день, сообщество! Что имеется: программно сформированный на сервере валидный SVG, внутри в основном path. Серверный код на php, поэтому решение предпочтительно для php. Что требуется: получить PDF, PS, а также PSD(по возможности) содержащие ВЕКТОРНЫЙ рисунок такой же как в исходном SVG. В случае PDF это будет встроенный SVG, для остальных не знаю. Что пробовал: MagickWand(ImageMagick) - с удовольствием конвертирует, практически что угодно и во что угодно, особенно удачно получается PNG (даже с прозрачностью). Но есть одна большая проблема, которая все плюсы сводит на нет. При конвертации SVG в PDF, EPS, PS, PSD, растрирует исходный рисунок. Что уже посмотрел: но не совсем разобрался: 1. Apache Batik, не совсем понятно как работать и что будет на выходе. Можно конечно через exec запускать яву, но как к этому отнесется хостер, пока не известно. Apache FOP, очень интересный инструмент, уже практически разобрался со всеми преобразованиями и почти получил файл .fo, все примитивы преобразуются кроме, нужного path, которого, почему-то не было в найденной схеме. И что дальше делать, снова exec и java? В общем, может кто уже сталкивался с подобной темой, буду очень благодарен за инфу.


Ответ

Обратите внимание на TCPDF TCPDF является PHP-классом генерации PDF-документов, не требующим внешних расширений. Этот класс встраивает SVG непосредственно в векторном виде в PDF, но при желании можно и преобразовать его в растр с помощью того же ImageMagic. Пример использования класса. Пример полученного PDF-документа с SVG-графикой.