0

我想解码在 Google App Engine (GAE) 上通过电子邮件收到的 base64 编码图像。当我从 MimeMessage 提取图像时,我得到一个 base64DecoderStream 对象。我最初假设这个解码数据是 ARGB 格式的字节数组,但这里似乎不是这种情况。我通过将解码的字节数组与运行“ImageIO.read(ImageFile).getRGB()”得到的字节数组进行比较来验证这一点,但它们不匹配。

所以我想知道:-

1) 使用 base64 解码图像后,我得到了哪种图像格式数据?

2) 如何在 GAE 上获得实际的 PNG 或 JPG 图像?

3)最后,有没有办法在 GAE 上以 ARGB 格式获取收到的电子邮件图像?

非常感谢任何帮助...谢谢

4

1 回答 1

1

Base64 编码数据是图像文件本身,而不是解压缩的像素数据。这是附加到消息的实际文件。因此,在解码 Base64 数据后,在这种特殊情况下,您有一个二进制 PNG 文件。

要将其作为图像进行操作,您有多种选择:

  1. 将解码byte[]后直接传递给ImagesServiceFactory.makeImage().
  2. 将解码后的文件写入byte[]文件并调用ImagesServiceFactory.makeImageFromFilename().
  3. 将解码byte[]后作为 a 存储到数据库中Blob,然后调用ImagesServiceFactory.makeImageFromBlob().

一旦你这样做了,不幸的是,使用谷歌的内置 API 获取 ARGB 数据似乎并不是一种简单的方法。此处讨论的解决方案可能会有所帮助: Extracting image pixel values in google appengine

于 2012-09-11T23:44:05.070 回答