首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在抽屉中存储已登录的用户图像?我成功地存储了用户名、电子邮件和其他文本信息

如何在抽屉中存储已登录的用户图像?我成功地存储了用户名、电子邮件和其他文本信息
EN

Stack Overflow用户
提问于 2018-08-12 00:09:20
回答 1查看 18关注 0票数 0

我成功地在共享首选项中存储了登录的用户信息,如用户名、用户电子邮件和其他重要信息。但我正在寻找存储用户图像的最好方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-12 00:17:21

你仍然可以使用共享首选项,因为你也可以在共享首选项中存储其他信息。您所要做的就是将您的图像转换为它的Base64字符串表示:

代码语言:javascript
复制
Bitmap realImage = BitmapFactory.decodeStream(stream);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);   
byte[] b = baos.toByteArray(); 

String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
textEncode.setText(encodedImage);

SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
Editor edit=shre.edit();
edit.putString("image_data",encodedImage);
edit.commit();

然后,在检索时,将其转换回位图:

代码语言:javascript
复制
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this);
String previouslyEncodedImage = shre.getString("image_data", "");

if( !previouslyEncodedImage.equalsIgnoreCase("") ){
    byte[] b = Base64.decode(previouslyEncodedImage, Base64.DEFAULT);
    Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
    imageConvertResult.setImageBitmap(bitmap);
}

但是,我必须告诉您,API8最近才包含了对Base64的支持。要针对较低的API版本,您需要先添加它。幸运的是,this guy已经有了所需的教程。

github上有一个quick and dirty example

原始线程here

希望它能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51801489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档