преобразование изображений .SVG с помощью PHP - Image Magick аналогично

Необходимо преобразовать файлы .svg и сохранить их в формате .svg или jpeg. Проблема с ImageMagick в том, что он сохраняет преобразованные файлы на белом фоне, а мне это очень нужно на прозрачном.

Любые предложения с другими инструментами или очистить php? Был бы очень признателен.


person Monky    schedule 25.06.2010    source источник
comment
JPEG не поддерживает прозрачность.   -  person Artefacto    schedule 25.06.2010
comment
Какое преобразование вам действительно нужно сделать с файлами SVG?   -  person Matt Gibson    schedule 25.06.2010


Ответы (3)


Правильная команда ImageMagick должна быть:

convert -background none somefile.svg somefile.png

В качестве формата файла следует использовать PNG или GIF, поскольку JPEG не поддерживает прозрачность.

Чтобы использовать его в PHP:

<?php
$svg_file_name = "somefile.svg";
$png_file_name = "somefile.png;
system("convert -background none $svg_file_name $png_file_name");
?>
person jigfox    schedule 25.06.2010
comment
вы сказали Любые предложения с другими инструментами или очистить php, так что это было с каким-то другим инструментом! Но вы можете вызвать это из PHP, см. мой обновленный ответ. - person jigfox; 25.06.2010

Я сомневаюсь, что вы можете легко преобразовать файлы SVG из php. Файлы SVG в основном представляют собой файлы XML, и стандарт общедоступен, поэтому любой может сделать конвертер...

Я бы выбрал внешний инструмент, это проще и быстрее, чем обработка внутри скриптового языка, и намного безопаснее, когда автор скрипта на самом деле не знает, как узнать переключатели командной строки для приложения, и что Файлы JPEG не поддерживают прозрачность :)

иди на convert -background none somefile.svg somefile.png как сказал Йенс...

person Quamis    schedule 25.06.2010

Вы не можете сделать прозрачность с JPEG, но вот как сохранить SVG как PNG с прозрачным фоном...

$image = new Imagick();
$image->setBackgroundColor(new ImagickPixel('transparent')); 
$image->readImage('somefile.svg');

// ... do any image manipulation you need to here ... 

$image->setImageFormat('png32');
$image->writeImage('somefile.png');
person orrd    schedule 21.09.2012