2012-03-26 3 views
0

오른쪽과 아래쪽에 많은 공백이있는 SVG 이미지가 있습니다. PHP와 imagick을 사용하여 고정 된 크기로 모든 이미지의 크기가 같아지는 이미지를 자르고 어떻게 동일한 파일로 다시 저장합니까?PHP에서 imagick와 자르기 이미지 svg 방법?

+0

당신은 PHP 라이브러리 [contao/상상-SVG (https://github.com/를 사용할 수는 contao/imagine-svg) SVG 이미지를 자르고 크기를 조정할 수 있습니다. – ausi

답변

3

전혀 상상할 필요가 없습니다. SVG는 XML 형식이므로 DOMDocument 객체에 문서를로드하고 svg 태그의 너비 및 높이 특성을 변경할 수 있습니다. 당신이 당신의 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

는 소리 :

여기 (SVG 파일이 jenkov.com에서 차용) 예입니다.

첫 번째 단계 수행하기위한 몇 가지 옵션 :