2012-03-26 9 views
0

私は、SVGイメージを持っています。右側と下に空白がたくさんあります。 PHPとimagickを使用して画像を切り抜く(固定サイズで、すべての画像が同じサイズになる)ようにして、同じファイルに保存し直しますか?phpのimagickでsvgイメージをトリミングする方法は?

+0

contao/imagine-svg)を使ってSVG画像をトリミングしてサイズを変更します。 – ausi

答えて

3

これはまったく必要ないはずです。 SVGはXML形式なので、ドキュメントをDOMDocumentオブジェクトにロードして、svgタグの幅と高さの属性を変更することができます。ここで

は(SVGファイルがjenkov.comから借りている)の例です:あなたは、あなたのSVGファイルに(しっかりフィット)ビューボックスを追加し、ImageMagickのでそれらをラスタライズしたいよう

<?php 
$svg = <<< EOF 
<svg xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink"> 

    <rect x="50" y="50" height="110" width="110" 
      style="stroke:#ff0000; fill: #ccccff" 
      transform="translate(30) rotate(45 50 50)" 
      > 
    </rect> 
    <text x="70" y="100" 
      transform="translate(30) rotate(45 50 50)" 
    >Hello World</text> 
</svg> 
EOF; 

$myWidth = 100; 
$myHeight = 150; 

$dom = new DOMDocument(); 
$dom->loadXML($svg); 
$svg = $dom->getElementsByTagName('svg'); 
$svg->item(0)->setAttribute('width', $myWidth); 
$svg->item(0)->setAttribute('height', $myHeight); 

print $dom->saveXML($svg->item(0))."\n"; 
+0

これはサイズ変更していますが、正しいですか?どのように私はそれをトリミングするのですか? –

+0

私は、グラフィック要素の寸法ではなく、画像の寸法を変更することが作物を行うと思っていました。私は自分自身を知ることに興味があるはずです! – halfer

+0

SVGファイルのデフォルトの幅と高さは100%で、キャンバスの0,0ポイントは左上隅にあります。ファイル内のオブジェクトが相対的なサイズで作成されていない限り、キャンバスのサイズを小さくすると、ファイルの下側と右側の空白が切り取られます。 – h00ligan

0

が鳴ります。

最初のステップを行うためのいくつかのオプション:あなたはPHPライブラリ[Contaoの/想像-SVG](https://github.com/を使用することができます

関連する問題