最近开发中需要将设置头像从网络中下载,然后存储到本地,优先判断本地是否存在这个头像。
1.将网络上的图片下载下来(用了AsyncTask),
protected Bitmap doInBackground(String... params) {
HttpClient httpClient=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(params[0]);
Bitmap bitmap=null;
try {
HttpResponse httpResponse=httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode()==200)
{
HttpEntity httpEntity=httpResponse.getEntity();
byte[] bytes= EntityUtils.toByteArray(httpEntity);
bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length);//将字节流转化为位图对象 (第二个参数含义为decode的位移量,一般为0)
}
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
2.将图片转化成64位字节流,存储到本地
SharedPreferences sharedPreferences=getSharedPreferences("headPic", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPreferences.edit();
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 50, byteArrayOutputStream);
String headPicBase64=new String(Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT));
editor.putString("headPic",headPicBase64);
editor.commit();
3.从本地获取64位字节流对应的字符串,并解析成图片对象
SharedPreferences sharedPreferences=getSharedPreferences("headPic",Activity.MODE_PRIVATE);
String headPic=sharedPreferences.getString("headPic","");
Bitmap bitmap=null;
if (headPic!="") {
byte[] bytes = Base64.decode(headPic.getBytes(),1);
// byte[] bytes =headPic.getBytes();
bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length);
这样就完成了图片的存储与获取了。