2015-04-03 72 views
0

我想轉換SVG至JPG,根據Convert SVG image to PNG with PHP我所建立的轉換方法PHP IMagick:不能保存圖像

public static function createJpgFromSvg($src, $dst, $w = 320, $h = 240) { 
    $im = new \Imagick(); 
    $svg = file_get_contents($src); 
    $im->readImageBlob($svg); 
    $im->setImageFormat("jpeg"); 
    $im->adaptiveResizeImage($w, $h); 
    $im->writeImage($dst); 
    $im->clear(); 
    $im->destroy(); 
} 

問題是,我總是收到一個例外:

ImagickException #1 

unable to open image `<path>': No such file or directory @ error/blob.c/OpenBlob/2675 

對於行:

$im->writeImage($dst); 

我已經檢查目標文件夾的寫權限,我有77你能幫我嗎?

回答

0

很可能您正在嘗試閱讀ImageMagick認爲不是有效的SVG的內容。

下面是應該工作的例子:

function svgExample() { 
    $svg = '<!--?xml version="1.0"?--> 
    <svg width="120" height="120" viewport="0 0 120 120" version="1.1" xmlns="http://www.w3.org/2000/svg"> 

     <defs> 
      <clipPath id="myClip"> 
       <circle cx="30" cy="30" r="20"></circle> 
       <circle cx="70" cy="70" r="20"></circle> 
      </clipPath> 
     </defs> 

     <rect x="10" y="10" width="100" height="100" clip-path="url(#myClip)"></rect> 

    </svg>'; 

    $image = new \Imagick(); 

    $image->readImageBlob($svg); 
    $image->setImageFormat("jpg"); 
    header("Content-Type: image/jpg"); 
    echo $image; 
} 

你或許可以找出問題是通過比較SVG的文本你有什麼。如果你不能,你需要發佈你的SVG文件,讓其他人看到它。