2015-05-26 72 views
-1

我有這個路徑上的SVG圖像http://www.quickdesign.com/user-uploads/5555f546857ce-saved.svgImagick:SVG至PNG轉換給我空白的PNG圖像

,我需要轉換成PNG爲此我使用下面的代碼對這個php文件http://www.quickdesign.com/png.php

<?php 
$svg_file_name = 'user-uploads/5555f546857ce-saved.svg'; 
$png_file_name = 'png/converted.png'; 
$im = new Imagick(); 
$im->setBackgroundColor(new ImagickPixel('transparent')); 
$svg = file_get_contents($svg_file_name); 
$svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$svg; 
$im->readImageBlob($svg); 

/*png settings*/ 
$im->setImageFormat("png32"); 


$im->writeImage($png_file_name); 

header('Content-type: image/png'); 

echo $im; 

$im->clear(); 
$im->destroy(); 
?> 

如果我刪除線$svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$svg;然後給出致命錯誤未捕獲的異常「ImagickException」有消息「沒有解碼委託這種圖像格式

誰能請幫助我如何ABO轉換使用PHP將svg圖像轉換爲PNG圖像。

任何幫助,將不勝感激。

謝謝

+0

當您搜索「無解碼代理此圖像格式」並嘗試了這些建議後,發生了什麼? –

+0

這是固定的這一行$ svg ='<?xml version =「1.0」encoding =「UTF-8」standalone =「no」?>'。$ svg; – Rakesh

回答

0

ImageMagick使用代表來讀取一些圖像。它看起來像它在系統中用於SVG文件的委託無法訪問您要求它讀取的SVG文件。

讀取該文件也沒有我的系統上,由於該位:

<stop fill="url(#svg_14)" stop-color="#A0D9F7" offset="0"/> 

與錯誤消息:

php: unrecognized color `svg_14' @ warning/color.c/GetColorCompliance/1046. 
php: unable to open image `svg_14': No such file or directory @ error/blob.c/OpenBlob/2674. 
php: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501. 

SVG文件中的URL支持是有點片狀。看起來svg_14是在文件末尾定義的。將它移動到開始位置會使文件變得「可讀」,但圖像看起來不同。

我會建議找出代理ImageMagick用於解碼SVG文件,這可能與convert -list configure找到,並發現是否有更新版本的該庫來修復該問題。