【发布时间】:2015-01-22 13:40:37
【问题描述】:
我正在尝试创建一个返回 SVG 的服务。 要求是 SVG 必须在 img 标签中工作(脚本标签将是一个奖励)并且还要避免 JavaScript。
我认为在 BASE 64 中对 img 进行编码并将其用作 URI 是我最好的选择。
Java 小服务程序
String imageString = g2.getSVGElement(); // creates svg html string e.g <svg> blah blah</svg>
byte[] imageData = Base64.encodeBase64(imageString.getBytes());
OutputStream out = response.getOutputStream();
out.write(imageData);
out.flush();
out.close();
GET 请求的响应
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v= ...
HTML
<img src="http://localhost:8080/testapp/getSVG?optionone=1&optiontwo=2">
但是当我加载页面时,我得到空白的 img 框。我知道 base64 img 是正确的,因为当我这样做时。 . .
<img src="data:image/svg+xml;base64,PHN22...">
它工作正常。我怎样才能用上面的 HTML 标签来实现呢?
【问题讨论】:
-
为什么要将图像编码为base64?为什么不只使用二进制数据?
-
因为我没有看到这个网站:css-tricks.com/probably-dont-base64-svg - 现在我让它返回数据:image/svg+xml;utf8,%3Csvg+xmln - utf8 之后的所有内容都是 URL/HTML编码 - aaa 还是不行