我有一个Web服务,它给了我一个名为'imagedata'的节点的json。它包含一个巨大的数据作为字符串。当我在浏览器中打印它时,它给了我有效的输入。 Base64编码的字符串以'='字符结尾。
我还在html页面中使用此标记对其进行了测试,它的工作原理非常好。
<img src="data:image/png;base64,MY_BASE64_ENCODED_STRING"/>
这是我的代码;
StringBuilder b64 = new StringBuilder(dataObj.getString("imagedata"));
byte[] decodedByte = Base64.decode(b64.toString(), 0);
bitmap = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
请注意,此代码适用于较小的图像数据,但在较大的图像数据上会出现bad-base64异常
请帮助我, 感谢
答案 0 :(得分:0)
为什么您的服务器为您提供base64编码? Base64只是通信而不是编码图像。如果它用于编码,它将使您的图像文件更大.IllegalArgumentException意味着您的图像编码格式不正确或无法解码。 在我的项目中,我现在只使用Base64发送图像。但它将由多部分改变。但是当服务器转发给收件人时。它只是转发图像的网址。所以我可以用这个简单的方法处理图像的URL:
public static Image loadImage(String url)
{
HttpConnection connection = null;
DataInputStream dis = null;
byte[] data = null;
try
{
connection = (HttpConnection) Connector.open(url);
int length = (int) connection.getLength();
data = new byte[length];
dis = new DataInputStream(connection.openInputStream());
dis.readFully(data);
}
catch (Exception e)
{
System.out.println("Error LoadImage: " + e.getMessage());
e.printStackTrace();
}
finally
{
if (connection != null)
try
{
connection.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
if (dis != null)
try
{
dis.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return Image.createImage(data, 0, data.length);
}
请注意J2ME的此代码。