用Java扩展SVG

时间:2010-02-12 23:01:01

标签: java svg scaling batik

我正在尝试缩放图像,修改它,然后输出到另一种图像格式。到目前为止,我一直在使用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 个答案:

答案 0 :(得分:7)

如果未设置KEY_AOI转码提示,则将使用根viewBox=""元素上的<svg>属性来确定感兴趣的区域。如果您要转码的文档没有viewBox=""属性,则会使用width=""height=""属性,因此AOI将为(0,0,宽度,高度) )。

如果没有设置这些,并且您事先不知道文档的坐标系中图形的位置,那么您可以计算根<svg>元素的边界框并将其用作AOI。您可以先为文档"booting the DOM"执行此操作,然后在文档元素上调用getBBox()