Android 将Base64编码字符串转换回Java服务器上的图像文件
我想将图像从Android发送到服务器。我将图像解码为Base64字符串并将其发送到服务器。我使用以下代码将图像转换为字符串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
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()
输出保存为文件,并使用任何图像查看器打开它/与原始数据进行比较。