Android 将Base64编码字符串转换回Java服务器上的图像文件

Android 将Base64编码字符串转换回Java服务器上的图像文件,android,string,image,base64,Android,String,Image,Base64,我想将图像从Android发送到服务器。我将图像解码为Base64字符串并将其发送到服务器。我使用以下代码将图像转换为字符串 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon); ByteArrayOutputStream bao = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressForma

我想将图像从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")); 
我得到了伪造的哈夫曼表定义异常,有时im=null异常。请告诉我我犯了什么错误

编辑:错误消息javax.imageio.IIOException:此行的伪哈夫曼表定义

  BufferedImage bImageFromConvert = ImageIO.read(in); 

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

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

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

试试这个

        byte[] imageBytes=Base64.decode(imageString,Base64.NO_WRAP);
        InputStream in = new ByteArrayInputStream(imageBytes);
        Bitmap b = BitmapFactory.decodeStream(in);
错误a)您没有发布错误消息。b) 检查是否可以将
Base64.decode()
输出保存为文件,并使用任何图像查看器打开它/与原始数据进行比较。