当前位置: 首页 > 面试题库 >

将Data-URL转换为BufferedImage

司空祯
2023-03-14
问题内容

我有一个图像文件的Data-URL,必须将其传递给另一个函数。从Data-URL到BufferedImage的路径必须是一个byteArray。

我的方法如下:

String dataUrl;
byte[] imageData = dataUrl.getBytes();

// pass the byteArray along the path

// create BufferedImage from byteArray
BufferedImage inputImage = ImageIO.read(new ByteArrayInputStream(imageData));

// If the picture is null, then throw an unsupported image exception.
if (inputImage == null) {
    throw new UnknownImageFormatException();
}

问题是,它总是抛出UnknownImageFormatException异常,这意味着inputImage为null,这意味着ImageIO.read无法识别图像类型。

我使用ImageIO.getReaderFormatNames()来获取受支持的文件名并获得以下列表:

Supported Formats: 
jpg, BMP, bmp, JPG, jpeg, wbmp, png, JPEG, PNG, WBMP, GIF, gif

我尝试传递的dataURLs像:data:image/png;base64,...data:image/jpg;base64,...

据我了解,这些文件位于受支持的文件列表中,因此应予以识别。

还有什么可能导致inputImage在这种情况下为null?更有趣的是,我该如何解决?


问题答案:

正如评论所言,图像数据是Base64编码的。要检索二进制数据,您必须剥离类型/编码标头,然后将Base64内容解码为二进制数据。

String encodingPrefix = "base64,";
int contentStartIndex = dataUrl.indexOf(encodingPrefix) + encodingPrefix.length();
byte[] imageData = Base64.decodeBase64(dataUrl.substring(contentStartIndex));

org.apache.commons.codec.binary.Base64从apache通用编解码器使用,其他Base64解码器也应该工作。



 类似资料:
  • 问题内容: 我似乎找不到此问题的答案。如何在JavaScript中将URL参数字符串转换为JSON?我的意思是问是否有像这样的内置功能或可以完成这项工作的单线? 例: => 问题答案: 您可以创建一个将返回JSON对象的方法 演示:http://jsfiddle.net/jAGN5/

  • 我似乎找不到这个问题的答案。如何在JavaScript中将URL参数字符串转换为JSON?我的意思是问是否有这样的内置函数或一行程序可以完成这项工作? =>

  • 问题内容: 我的页面会生成这样的URL:如何将其转换为普通地址? 我将其用作的属性。 问题答案: 从JavaScript创建的URL 不能转换为“普通” URL。 一个URL并不是指在服务器上存在的数据,它是指数据您的浏览器目前在存储器中,当前页面。它在其他页面上将不可用,在其他浏览器中将不可用,并且在其他计算机上将不可用。 因此,通常来说,将URL 转换为“正常” URL 是没有意义的。如果要使

  • 除了图像数据,我们也可以提取图像的data URL,data URL实质上是一个很长的文本字符串,该字符串包含对画布图像进行编码后的信息。如果想把画布上的图像保存到本地存储或离线数据库,data URL就非常方便。本节,我们将绘制一个云状图形,获取其data URL,然后把它插入到HTML页面,以便我们能看到它是什么样子。 绘制步骤 按照以下步骤,把画布上的图画转换为data URL: 1. 定义

  • 线程“main”java.lang.nosuchmethoderror中出现异常:com.fasterxml.jackson.core.jsonFactory.createparser(ljava/net/URL;)lcom/fasterxml/jackson/core/jsonParser;在com.fasterxml.jackson.databind.objectmapper.readtree

  • 问题内容: 在使用SOLRJ时,我想知道如何使用SOLR查询语法将SolrQuery对象转换为其URL表示形式。我尝试使用.toString()方法,但它没有返回正确的查询表示形式。还有其他方法吗? 问题答案: 对于此问题,我建议使用ClientUtils.toQueryString。 在源代码HttpSolrServer你可以看到,这是使用的Solrj代码本身这个原因。