svg 圖形的儲存與輸出

edited 十一月 2014 in 進階PHP討論
雖然網頁可以直接輸出 svg ,但為了避免無法預期的問題,還是會將 svg 轉成其他格式圖片做靜態呈現

其實透過 imagick 很簡單
$im = new Imagick();
$im->readimage('test.svg');
$im->setImageFormat("png24");
$im->writeImage('good.png');
$im->destroy();

但是當 svg 有引用外部圖片,發現這些圖片都無法呈現,找到這篇:
http://www.imagemagick.org/discourse-server/viewtopic.php?t=23900

因為預設的 RSVG 產生器無法處理外部圖片或嵌入的 js code

發現程式碼只要改成這樣就可以了
$im = new Imagick();
$im->readimage('MSVG:test.svg');
$im->setImageFormat("png24");
$im->writeImage('good.png');
$im->destroy();

或是
$im = new Imagick();
$im->setFormat('MSVG');
$im->readImageBlob(file_get_contents('your_svg'));
$im->setImageFormat("png24");
$im->writeImage('good.png');
$im->destroy();
Sign In or Register to comment.