如何使用JSON在服务器的响应中传递图像? Base64编码?

时间:2011-02-20 15:07:32

标签: python android image listview base64

在我的Android应用程序中,我在ListView中显示一些用户。我想显示(用户的pic,first_name,last_name)。现在,它只适用于first_name和last_name。我想添加图片。我从服务器(python)收到的数据JSON是这样的:

[{"profil":"first_name": "Jim", "last_name": "Carrey"}}, "_id": {"$oid": "4d595cda1d41c81536000000"}}, {"profil":{"first_name": "Mathieu", "last_name": "Polnari"}}, "_id": {"$oid": "4d5916581d41c80e88000000"}}, {"profil": {"first_name": "Vincent", "last_name": "Fatou"}}, "_id": {"$oid": "4d58fc7e1d41c8090e000000"}}...] 

如果我在图片的JSON中添加一个参数应该会更好。

你认为将图片作为字符串返回JSON并使用Base64进行解码是一个好主意吗?

2 个答案:

答案 0 :(得分:12)

从技术上讲,将二进制数据编码为base64字符串并将其包含在JSON中是完全可以的。

但是,正如@servermanfail指出的那样,将图像链接嵌入JSON并在第二步中下载它们可能会更好。

附加的好处是传输的大小/速度,因为base64流是原始二进制流的大小的4/3(33%开销)。

此外,在这种情况下,您可以缓存图像。

答案 1 :(得分:8)

我建议添加一个包含资源URL的JSON参数。

为了增加安全性,您可以通过向资源添加带有盐校验和的md5来创建加密URL,例如http://server.com/images/1234567890123456789012345678901234567890/image.jpg - 这是facebook.com使用的方法。