解码在Google App Engine上作为电子邮件收到的base64图像

时间:2012-09-11 18:33:19

标签: java google-app-engine base64 mime-types javax.imageio

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

所以我想知道: -

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 将已解码的byte[]直接传递给ImagesServiceFactory.makeImage()
  2. 将已解码的byte[]写入文件并致电ImagesServiceFactory.makeImageFromFilename()
  3. 将已解码的byte[]作为Blob存储到数据库中,然后拨打ImagesServiceFactory.makeImageFromBlob()
  4. 一旦你完成了这项工作,遗憾的是,使用谷歌的内置API获取ARGB数据并不是一件容易的事。这里讨论的解决方案可能有所帮助:Extracting image pixel values in google appengine