1、存图片路径
2、存图片二进制(sqllite blob的数据类型)
3、存图片Uri
/**
* 获取资源id的uri字符串
* 这里可以传.xml格式的,但是在解析的时候会失败
*/
fun getUriString(context: Context, @DrawableRes id: Int): String {
return ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
context.resources.getResourcePackageName(id) + "/" +
context.resources.getResourceTypeName(id) + "/" +
context.resources.getResourceEntryName(id)
}
/**
* 把 ContentResolver.SCHEME_ANDROID_RESOURCE 的uri转为bitmap
* 该方法只支持 R.mipmap 资源
*/
fun getUriBitmap(context: Context, uriString: String): Bitmap? {
val uri = Uri.parse(uriString)
val inputStream = context.contentResolver.openInputStream(uri)
val bitmap: Bitmap? = BitmapFactory.decodeStream(inputStream)
inputStream!!.close()
return bitmap
}
/**
* 把 ContentResolver.SCHEME_ANDROID_RESOURCE 的uri转为Drawable
* 该方法只支持 R.drawable 下的图片(.png等,不支持.xml)资源
*/
fun getUriDrawable(context: Context, uriString: String): Drawable? {
val uri = Uri.parse(uriString)
val inputStream = context.contentResolver.openInputStream(uri)
val drawable = Drawable.createFromStream(inputStream, "srcName")
inputStream!!.close()
return drawable
}
网友评论