【问题标题】:How can I create a BufferedImage from an SVG path?如何从 SVG 路径创建 BufferedImage?
【发布时间】:2012-12-11 16:47:25
【问题描述】:

我试图找到这个答案(在 Google 和 Stackoverflow 上)但没有成功,但我确信之前一定有人问过,所以如果存在,请随时向我指出答案。

目前,我有一个 Java servlet,它可以将一个 PNG 从磁盘加载到一个 BufferedImage 中,在其上写入文本,然后将字节 [] 流回客户端。

我的愿望是用渲染的 SVG 路径替换来自磁盘的 PNG,来自我在线获取的图标路径集合(例如 "M21.871,9.814 15.684,16.001 21.871,22.188 18.335,25.725 8.612,16.001 18.335,6.276z""M22.727,18.242L4.792,27.208l8.966-8.966l-4.483-4.484l17.933-8.966l-8.966,8.96 L22.727,18.242z").

我遇到过BatikSVG Salamander,但我很难理解如何使用它们中的任何一个来完成上述任务,最具体地说,如何将 SVG 路径渲染到 BufferedImage 中。我需要能够指定 (a) 图像的尺寸,(b) 填充颜色和 (c) & (d) 笔触宽度和颜色。

【问题讨论】:

    标签: java svg


    【解决方案1】:

    Here 是一个基本使用Transcoder API 的示例。

    【讨论】:

    • 我找到了很多关于加载 SVG 文件的示例和讨论,但我没有 SVG 文件。我有 SVG 路径,但我还没有看到任何将这些页面解析为对象的方法,然后可以将其呈现为 BufferedImage。我错过了什么吗?有没有一些简单的方法可以将路径转换为 ​​SVG 文件?
    • 对不起,我的意思是“解析那些路径”,而不是“解析那些页面”!!
    • 是的,它是字符串连接。 String svgFile = "<?xml ... ?><svg><path d=\"" + myPaths + "\" /></svg>"; new TranscoderInput( new java.io.StringReader( svgFile ) )
    • 谢谢您:效果很好。如果我有机会(一旦我知道它没有错误),我会尝试将我现在工作的代码放入我的问题中。
    猜你喜欢
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多