2010-06-25 2 views
2

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

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

+3

JPEG не поддерживает прозрачность. – Artefacto

+0

Какое преобразование вам нужно делать с SVG-файлами? –

ответ

4

Правая команда 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"); 
?> 
+0

Мне нужны некоторые php-инструменты imagemagick - не внешняя команда – Monky

+2

вы сказали «Любые предложения с другими инструментами или очистить php», так было и с каким-то другим инструментом! Но вы можете называть это изнутри PHP, см. Мой обновленный ответ. – jigfox

0

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

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

пойти convert -background none somefile.svg somefile.png как сказал Йенс ...

0

Вы не можете сделать прозрачность с помощью 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');