2013-07-05 93 views
5

在服務器端我有一個生成的SVG XML源代碼。 爲了從SVG XML代碼提供PNG(或JPG)下載,應將其更改爲圖像。 長時間在網上搜索,我只使用ImageMagick找到了這個解決方案。 Convert SVG image to PNG with PHP 但我無法訪問ImageMagick庫,因此我需要使用其他方法將SVG XML代碼轉換爲位圖圖像。從SVG XML創建PNG無需ImageMagick

有沒有人有想法?

Brw:這不是一個選項來保存該svg在操作系統上執行二進制文件或腳本進行轉換。

謝謝。

+0

你的意思是你動態創建一個SVG,並要爲一個PNG?你能提供更多細節嗎?你想解決一個跨瀏覽器的問題嗎? – andy256

+0

Inkscape可以將SVG導出爲PNG格式(保存似乎還沒有工作),但這似乎並不符合我所瞭解的要求。 – andy256

+0

你有沒有簽出[蠟染](http://xmlgraphics.apache.org/batik/),[如何將SVG轉換成PNG](http://stackoverflow.com/questions/8167977/how -to-convert-svg-into-png-on-the-fly),以及[是否有一些Java庫用於將.svg轉換爲.png或.jpg代碼?](http://stackoverflow.com/questions/ 6610792 /有此結果一些-java的庫用於轉換-SVG至PNG - 或JPG-在代碼)?他們使用java,但你應該能夠掛鉤它。 – 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執行二進制文件或腳本在操作系統上轉換'。但這正是您的建議。 –