2013-07-05 3 views
5

서버 측 생성 된 SVG XML 소스 코드가 있습니다. SVG XML 코드에서 PNG (또는 JPG) 다운로드를 제공하려면이 이미지로 변경해야합니다. 오랫동안 웹을 검색하면서 ImageMagick을 사용하여이 솔루션을 찾았습니다. Convert SVG image to PNG with PHP 그러나 ImageMagick 라이브러리에 액세스 할 수 없으므로 SVG XML 코드를 비트 맵 이미지로 변환하는 다른 방법이 필요합니다.ImageMagick없이 SVG XML에서 PNG 만들기

누구나 아이디어가 있습니까?

Brw : 변환 할 운영 체제에 바이너리 또는 스크립트를 실행하는 것은 SVG를 저장하는 옵션이 아닙니다.

감사합니다.

+0

당신이 비행에 SVG를 생성하고, PNG를 제공해야한다는 것을 의미합니까? 좀 더 자세히 설명해 주시겠습니까? 브라우저 간 문제를 해결하려고합니까? – andy256

+0

Inkscape는 SVG를 PNG 형식으로 내보낼 수 있습니다 (아직 작동하지 않는 것으로 저장하십시오). 그러나이를 이해할 때 요구 사항을 충족하지 못하는 것 같습니다. – andy256

+0

[Batik] (http://xmlgraphics.apache.org/batik/), [SVG를 PNG로 변환하는 방법] (http://stackoverflow.com/questions/8167977/how -to-convert-svg-into-png-on-the-fly) 및 [.svg를 .png 또는 .jpg 코드로 변환하기위한 Java 라이브러리가 있습니까?] (http://stackoverflow.com/questions/) 6610792/at-some-java-library-for-converting-svg-to-png-or-jpg-at-code)? 그들은 자바를 사용하지만, 당신은 그것을 연결할 수 있어야합니다. – andy256

답변

0

바틱 라이브러리를 사용해야합니다. 다운로드하여 프로젝트의 어딘가에 배치하십시오. 그런 다음 php에서 shell_exec() 함수를 사용하여 batik 명령을 호출하십시오. 몇 초가 걸리고 svg를 png로 변환합니다.

예 : -

outputfile ='path where you want to lace png' 
$tempSVG_filename = '/var/www' . $baseUrl . '/png/temp.svg'; 
$tempSVG_handle = fopen($tempSVG_filename, 'w+'); 
fwrite($tempSVG_handle, $YourSVG); 
fclose($tempSVG_handle); 
$mimetype = 'image/png'; 
$width = '6000'; 

$result = shell_exec('java -jar /var/www/svgtopng/batik-1.7/batik-rasterizer.jar -m ' . $mimetype . ' -d ' . $outputfile . ' -w ' . $width . ' ' . $tempSVG_filename . ' 2>&1'); 
unlink($tempSVG_filename); 
+0

그 해답을 주셔서 감사합니다. 그러나 다음과 같은 이유로 제 질문에 부합하지 않습니다. '이 SVG를 저장하면 바이너리 나 스크립트를 실행할 수있는 옵션이 아닙니다. 운영 체제에서 변환하는'. 그러나 이것이 당신의 제안입니다. –