【问题标题】:Convert Base64 encoded String into Image file back on Java Server将 Base64 编码的字符串转换回 Java 服务器上的图像文件
【发布时间】:2012-03-16 11:32:35
【问题描述】:

我想将图像从 Android 发送到服务器。我将图像解码为 Base64 字符串并将其发送到服务器。我使用以下代码将图像转换为字符串

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);  
    ByteArrayOutputStream bao = new ByteArrayOutputStream();  
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);  
    byte [] byteArray = bao.toByteArray();  
    String imageToString=Base64.encodeToString(byteArray,Base64.DEFAULT);  
    return imageToString; 

现在我无法在服务器端将其转换回图像。我试过这个

   byte[] imageBytes=Base64.decode(imageString);  
   InputStream in =  new ByteArrayInputStream(imageBytes);  
   BufferedImage bImageFromConvert = ImageIO.read(in);  
   ImageIO.write(bImageFromConvert, "jpg", new File("D:\\myImage.jpg")); 

我收到 Bogus Huffman 表定义 异常,有时还有 im = null 异常。请告诉我我犯了什么错误

编辑:错误消息 javax.imageio.IIOException: Bogus Huffman table definition 在这一行

  BufferedImage bImageFromConvert = ImageIO.read(in); 

【问题讨论】:

  • 错误 a) 您没有发布错误消息。 b) 检查您是否可以将Base64.decode() 输出保存为文件并使用任何图像查看器打开它/与您的原始数据进行比较。

标签: android string image base64


【解决方案1】:

试试这个

        byte[] imageBytes=Base64.decode(imageString,Base64.NO_WRAP);
        InputStream in = new ByteArrayInputStream(imageBytes);
        Bitmap b = BitmapFactory.decodeStream(in);

【讨论】:

    【解决方案2】:

    这里可能存在多个问题。我认为的第一个事实是您将图像字节转换为字符串(使用 Android 环境具有的任何默认编码对它们进行编码)并将字符串解码回字节而不确保您使用相同的文本编码(从而获得相同的字节)。

    为什么不直接发送字节?或者更好的是直接通过 HTTP 多部分表单上传文件。这里有一个教程:

    http://flo.dauran.com/194-android-uploader-une-image-sur-une-serveur-web/

    (是法语,但有详细的代码示例)

    【讨论】:

      猜你喜欢
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 2013-07-04
      • 2016-08-30
      • 1970-01-01
      • 2013-02-15
      相关资源
      最近更新 更多