我想解码通过Google App Engine(GAE)上的电子邮件收到的base64编码图像。当我从MimeMessage中提取图像时,我得到一个base64DecoderStream对象。我最初假设这个解码数据是ARGB格式的字节数组,但这似乎不是这种情况。我通过将解码后的字节数组与运行“ImageIO.read(ImageFile).getRGB()”得到的字节数组进行比较来验证这一点,但它们并不匹配。
所以我想知道: -
1)使用base64解码图像后,我得到了哪些图像格式数据?
2)如何在GAE上获得实际图像PNG或JPG?
3)最后,有没有办法在GAE上以ARGB格式获取收到的电子邮件图像?
非常感谢任何帮助...... 感谢
答案 0 :(得分:1)
Base64编码数据是图像文件本身,而不是解压缩的像素数据。它是附加到邮件的实际文件。因此,在解码Base64数据后,在这种特殊情况下,您有一个二进制PNG文件。
要将其作为图像进行操作,您有以下几种选择:
byte[]
直接传递给ImagesServiceFactory.makeImage()
。byte[]
写入文件并致电ImagesServiceFactory.makeImageFromFilename()
。byte[]
作为Blob
存储到数据库中,然后拨打ImagesServiceFactory.makeImageFromBlob()
。一旦你完成了这项工作,遗憾的是,使用谷歌的内置API获取ARGB数据并不是一件容易的事。这里讨论的解决方案可能有所帮助:Extracting image pixel values in google appengine。