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 ) );
...
4

1 回答 1

8

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

如果这些都没有设置,并且您事先不知道图形在文档坐标系中的位置,那么您可以计算根<svg>元素的边界框并将其用作 AOI。您可以通过首先为您的文档“启动 DOM”,然后调用getBBox()文档元素来做到这一点。

于 2010-02-13T01:38:14.987 回答