2017-10-18 18 views
0

J'utilise l'imagick pour convertir svg en png. Mais mon svg contient des images incorporées dedans. donc en le convertissant en png ne rend pas l'image incorporée.svg to png ne fonctionne pas en php

$image = new \Imagick(); 
try{ 
    $file_name = uniqid($prefix).".jpeg"; 
    $image->readImageBlob($raw_svg); 
    $image->setImageFormat("png24"); 
    $image->writeImage("$folder_name/".$file_name); 
} catch (ImagickException $ex) { 
    echo $ex->getMessage(); 
} 

SVG données

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="600" height="400" viewBox="0 0 600 400" xml:space="preserve"> 
<desc>Created with Fabric.js 2.0.0-beta7</desc> 
<defs> 
</defs> 
<rect x="0" y="0" width="600" height="400" fill="#000000"></rect> 
    <g transform="translate(300.77 141.27) scale(2.45 2.26)"> 
     <text xml:space="preserve" font-family="Dollar2" font-size="22" font-style="normal" font-weight="normal" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(255,255,255); fill-rule: nonzero; opacity: 1; white-space: pre;" > 
      <tspan x="-117.34" y="6.91" >Back Side</tspan> 
     </text> 
    </g> 
<g transform="translate(289.57 247.98) scale(0.35 0.35)"> 
    <image xlink:href="data:image/png;base64,iVBORw0KGgoAAAANtTyE2NP5d9xZHM0bHtWwv3UYAuCINIplLWR8DS0uSOiTGLf1D2r/s3a8rxSbGLsVX4jt7nWc7JwHa/hqcyfVf6ZPmZ/u79nun+mTHHP6VX+t6lO+PckRyonYcOdqNETPJtLnBs89dwI0s7Y24alIM0g883zrzOP61/GnsT/6p607++djHcyJo6rcpFOQRCyjv8TYAAeI+bBrle9xgAAAABJRU5ErkJggg==" x="-334.5" y="-173.5" style="stroke: rgb(240,240,240); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-opacity: 0; fill-rule: nonzero; opacity: 1;" width="669" height="347"></image> 
<rect x="-334.5" y="-173.5" width="669" height="347" style="stroke: rgb(240,240,240); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: none; fill-rule: nonzero; opacity: 1;"/> 
</g> 
</svg> 

SVG Image SS
PNG IMAGE SS

+1

me faire savoir si quelque chose manque, je l'ai essayé d'inclure la plupart des détails. – DS9

+0

Les données d'image publiées semblent être corrompues. – ccprog

+0

Pour des raisons de sécurité, de nombreux délégués SVG ne restitueront pas les balises 'image xlink'. Voir [cette réponse] (https://stackoverflow.com/a/29632564/438117) pour obtenir des conseils. – emcconville

Répondre

0

Au-dessus est de se résoudre après avoir changé le ci-dessous: version php: 5,5

apt-get install php5- imagick
apt-get install graphicsmagick-imagemagick-compat
apt-get install imagemagick
apt-get install checkinstall build-essential & & apt-get build-dep ImageMagick -y

Pour ajouter des polices personnalisées:
copier toutes les polices personnalisées (fichier TTF) au-dessous de l'emplacement:

/usr/share/fonts/truetype

puis

fc-cache -v/usr/share/fonts