2010-02-12 2 views
11

이미지의 크기를 조절하고 수정 한 다음 다른 이미지 형식으로 출력하려고합니다. 지금까지 나는 apache batik 라이브러리를 사용 해왔다. 간단한 변환을 위해, 이것은 쉽습니다. svg를 클리핑하는 경우, 이것은 쉽습니다.Java에서 SVG 크기 조정

그러나 SVG에 의해 생성 된 전체 이미지로 확장하는 방법을 알아낼 수 없습니다. 즉, 경계 사각형으로 관심 영역을 지정할 수 있으며 경계 사각형을 통해 배율을 조정할 수 있지만 svg 이미지의 비율을 조정하는 방법을 알지 못합니다. 당신이 KEY_AOI 트랜스 코딩 힌트를 설정하지 않으면 루트 <svg> 요소에 viewBox="" 속성이 관심의 영역을 결정하는 데 사용됩니다

... 
//set the output width and height 
transcoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(newSize.width)); 
transcoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, new Float(newSize.height)); 

//set the aoi for scaling. Unsure what to do here. 
transcoder.addTranscodingHint(PNGTranscoder.KEY_AOI, new Rectangle(0, 0, 100, 100)); 
... 

답변

7

:

이것은 내가 지금까지있는 것입니다. 코드 변환중인 문서에 viewBox="" 속성이없는 경우 width=""height="" 속성이 사용되므로 AOI는 (0, 0, 너비, 높이)가됩니다.

그리고 이들 중 어느 것도 설정되어 있지 않고 문서의 좌표계 내에서 그래픽이 어디에 있는지 미리 알지 못하는 경우 루트 <svg> 요소의 경계 상자를 계산하여 AOI로 사용할 수 있습니다. 문서의 경우 먼저 "booting the DOM"을 입력 한 다음 문서 요소에 getBBox()을 호출하면됩니다.

+0

다양한 SVG 이미지를 다루므로이 중 3 가지를 모두 수행해야 할 것입니다. 빠른 답변 감사합니다. 나는 이것을 시험 할 수있게되면 받아 들일 것이다. –

+0

@heycam 제발,이 질문에 도와주세요. http://stackoverflow.com/questions/15286536/outofmemory-while-resizing-svg-file-using-apache-batik – Mihir