在 Java 中缩放 SVG

发布于 2024-08-21 03:08:16 字数 659 浏览 6 评论 0原文

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

I'm attempting to scale an image, modify it, and then output to another image format. So far, I've been using the apache batik library. For simple conversion, this is easy. For clipping the svg, this is easy.

However, I can't seem to figure out how to scale to the full image created by the svg. That is, I can specify the area of interest as a bounding rectangle, and then scaling works over the bounding rectangle, but I do NOT know how to scale over the image of the svg.

This is what I have so far:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄离 2024-08-28 03:08:16

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

如果这些都没有设置,并且您事先不知道图形在文档坐标系中的位置,那么您可以计算根 元素的边界框并使用作为 AOI。您可以通过首先为您的文档"引导 DOM" 来完成此操作,然后调用 < code>getBBox() 在文档元素上。

If you don't set the KEY_AOI transcoding hint, then the viewBox="" attribute on the root <svg> element will be used to determine the area of interest. If the document you are transcoding doesn't have have a viewBox="" attribute, then the width="" and height="" attributes will be used, so the AOI will be (0, 0, width, height).

And if none of these are set, and you don't know in advance where within the document's coordinate system the graphics are, then you could compute the bounding box of the root <svg> element and use that as the AOI. You could do this by first "booting the DOM" for your document, and then calling getBBox() on the document element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文