作为一个新手对于图片存储到文件及一些其他的存储方式都不太了解,因此我想到的办法是把图片的路径存储到
数据库里面,之后利用方法调用出来显示来实现图片的存储。
不说废话了。
主要思想是根据图片唯一的Uri来获取图片。
利用Uri来获取图片的代码:
其中ima_uri是对应于该图片的Uri.
InputStream is=
null;
is = getContentResolver().openInputStream(ima_uri);
Bitmap bm=BitmapFactory.
decodeStream(is);
了解了根据Uri来读取图片的方式。
接下来就是如何存储Uri,我采取的方式是将Uri转化为String的方式来存入数据库,之后再从
String转化为Uri来提取图片。
虽然想法很简单,大家都能想到,但是我还是尝试了很久,网上的代码还是有很多的不能用,而且
看起来很复杂对于新手来说。
总之最后找到一个很多简单的转化方法:
转化为String利用下面方式强转。(感觉运气好的情况下,直接就找到了这个简单的方法= =)
String str_uri=String.
valueOf(
ima_uri);
转化会Uri的方法:
Uri.
parse(str_uri)
上面这一行代码得到的就是直接的Uri.可以寻找到原来的图片。
然后有了这两个其他的存储进数据库,只需要将String存入数据库就行了。代码网上很多。
也很简单,就不说了。至于获取当前图片的Uri,网上的那些调用图库之类的方法都是可以的。
算了,我还是贴一下吧:
下面这个代码就可以根据当前的图片存储到某个位置,然后返回其Uri,Bitmap输入,返回其Uri
private Uri saveBitmap(Bitmap bm) {
File tmpDir =
new File(Environment.
getExternalStorageDirectory() +
"/com.jikexueyuan.avater");
//建立文件夹 if (!tmpDir.exists()) {
tmpDir.mkdir();
}
File img =
new File(tmpDir.getAbsolutePath() +
"avater.png");
//建立图片格式的文件 try {
FileOutputStream fos =
new FileOutputStream(img);
// bm.compress(Bitmap.CompressFormat.
PNG,
85, fos);
//将bitmap转化格式进行存储 fos.flush();
fos.close();
return Uri.
fromFile(img);
}
catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
转载请注明原文地址: https://ju.6miu.com/read-676161.html