我正在尝试缩放图像,修改它,然后输出到另一种图像格式。到目前为止,我一直在使用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 ) );
...
答案 0 :(得分:7)
如果未设置KEY_AOI转码提示,则将使用根viewBox=""
元素上的<svg>
属性来确定感兴趣的区域。如果您要转码的文档没有viewBox=""
属性,则会使用width=""
和height=""
属性,因此AOI将为(0,0,宽度,高度) )。
如果没有设置这些,并且您事先不知道文档的坐标系中图形的位置,那么您可以计算根<svg>
元素的边界框并将其用作AOI。您可以先为文档"booting the DOM"执行此操作,然后在文档元素上调用getBBox()
。