-
Расширение ImageMagick для PHP когда я считываю свежесгенерированный SVG, у которого ясно задан размер 244x290, при сохранении его в PNG выдает 305x362?
SVG объявляется так:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" viewBox="0 0 244 290" x="0" y="0" width="244" height="290">
Код, по сути, практически такой, только еще обработка ошибок:
$imageMagick = new Imagick();
$imageMagick->readimageblob($svgData);
$imageMagick->setImageFormat('png24');
$imageMagick->writeImage($fileName);♡ recommended by @stanis
Replies (10)
-
@skobkin-ru, На всякий случай:
$ php -v
PHP 5.5.7-pl0-gentoo (cli) (built: Dec 18 2013 21:16:16)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies/1 · Reply -
@skobkin-ru, никогда не думал что имагик может уметь svg.
Для меня это открытие. Но учитывая, как остальные линуксовые штуки с ним обращаются... Я думаю, что лучше конвертировать через браузер./2 · Reply -
@skobkin-ru, 1) В svg — это пункты. Если хочешь пиксели — кажэтся, px, но по-моему imagemagickу это можэт не помочь. Поскольку
2) (вроде) (некоторые) рендэреры svg для imagemagick всё равно пересчитывают пиксели в пункты с невменяемым дефолтом, а только потом рендэрят с заданным im разрешэнием 90 dpi.
В общем, если px не поможэт — ну, учти, что у im — 90/72./3 · Reply -
@skobkin-ru, никакой из элементов за края не выходит? А то мож bbox поболее 244*290 показывает./4 · Reply
-
@az09, Не. Как выяснилось, это только на моем PHP. На сервере таймвеба такого нет, там 5.3.X. У еще одного человека, которого просил проверить — тоже на 5.5.3. А у меня на 5.5.7 на генте — есть.
-
@skobkin-ru, Скорее через какой-нибудь селениум, поскольку в браузерах, вроде как, достаточно адекватные парсеры для контента такого типа.
-
@skobkin-ru, Неважно как работает какая-либо хрень, если она дает стабильный результат.