如何使用Image中的Data URI作为InputStream?

时间:2013-10-08 04:52:10

标签: java facebook image canvas base64

我从html5画布中检索了base64数据uri。在我的servlet中,我想解码数据uri并将其用作输入流,如下面的“xxx”所示。以下编码是我将html5画布中的图像发布到我的Facebook帐户中。我正在使用restfb。

FacebookType publishPhotoResponse = facebookClient.publish("me/photos", FacebookType.class,
BinaryAttachment.with("test.jpeg", getClass().getResourceAsStream("xxx")),
Parameter.with("message", "Test"));

我怎样才能实现这一目标?感谢。

已更新越来越近但仍无效!

在我的jsp中:

var d = document.getElementById('img').src;
window.location.href = "upload?src=" + d;

在我的servlet中:

String d = req.getParameter("src");
String head = "data:image/jpeg;base64,";
String base64 = d.substring(head.length()-1);

byte[] buf = DatatypeConverter.parseBase64Binary(base64);
ByteArrayInputStream is = new ByteArrayInputStream(buf);

FacebookType publishPhotoResponse = facebookClient.publish("me/photos", FacebookType.class,
BinaryAttachment.with("test.jpeg", is),
Parameter.with("message", "Test"));

我的编码中是否有任何错误,因为它似乎在servlet中的某处出现错误。我无法查看服务器上运行的错误。

1 个答案:

答案 0 :(得分:3)

这几乎与this answer完全相反!或者至少,相反。它回复Image以64 String为基础,而此用例为StringImage

javax.xml.bind.DatatypeConverter.parseBase64Binary(String)获取byte[]的{​​{1}}。

使用String构建ByteArrayInputStream