在 Java 中缩放 SVG

2022-09-04 22:40:08

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

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

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


答案 2