在Java中缩放SVG

13

我想要对一个图像进行缩放、修改,然后输出到另一种图像格式。到目前为止,我一直在使用apache batik库。对于简单的转换,这很容易。对于剪切svg,这也很容易。

然而,我似乎无法弄清如何将图像缩放到由svg创建的整个图像上。也就是说,我可以指定感兴趣的区域作为边界矩形,然后缩放工作在边界矩形上,但我不知道如何在svg图像上进行缩放。

这是我目前的进展:

...
//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 ) );
...
1个回答

8
如果您没有设置KEY_AOI转码提示,则根元素上的viewBox =“”属性将用于确定感兴趣的区域。如果您要转码的文档没有viewBox =“”属性,则将使用width =“”和height =“”属性,因此AOI将为(0,0,width,height)。
如果没有设置这些属性,并且您事先不知道图形在文档坐标系中的位置,则可以计算根元素的边界框并将其用作AOI。您可以通过首先引导文档的DOM,然后在文档元素上调用getBBox()来实现此目的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接