如何从可绘制文件夹上的图像获取路径并设置为图像视图,位图?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从可绘制文件夹上的图像获取路径并设置为图像视图,位图?相关的知识,希望对你有一定的参考价值。
我已经在android项目的drawable文件夹中有一些图片了。
我创建了一些对象(代理),然后我需要用我保存在数据库中的这张图片设置imageView
。
所以,我将图片保存为String photoPath
:
Uri path1 = Uri.parse("android.resource://"+BuildConfig.APPLICATION_ID+"/" + R.drawable.agent1);
String photoAg1 = path1.getPath();
ag1.setPhotoPath(photoAg1);
(我已经尝试过path1.toString。)
好的,直到那里没问题。这个对象显示在listView
与ImageView
。
为了展示它,我正在做:
ImageView photo = (ImageView) view.findViewById(R.id.list_cell_photo);
System.out.println(agent.getPhotoPath());
Bitmap bitmap = BitmapFactory.decodeFile(agent.getPhotoPath());
Bitmap lowdefbitmap = Bitmap.createScaledBitmap(bitmap,300,300,true);
photo.setImageBitmap(lowdefbitmap);
问题出在createScaledBitmap
上。上面的错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:714)
从System.out.println
返回:/ 2131099732如果我把path1.toString
返回的是:android.resource://com.aa.xlambton/2131099732
我已经看过了:Create a Bitmap/Drawable from file path
Android get image path from drawable as string
Get absolute path of android drawable image
我想我保存这个路径是错误的,因为Bitmap
无法解码文件,所以它对createdScaledBitmap
来说是空的。
有谁可以帮助我吗?
您可以将参考ID R.drawable.img_name
保存为整数而不是保存路径。
当你需要操纵这个drawable时,你可以使用那个id而不是R.drawable.img_name
。
如果你需要这个drawable的位图,请关注this
Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
saved_id);
您可以尝试使用此方法:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.id.youResourceId);
试试这样
public int getImage(String imageName) {
int drawableResourceId = context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
return drawableResourceId;
}
在我的项目中,我想从项目文件夹中获取一些图像。因此有一种方法可以在java类中获取图像,但在.xml文件中它很简单。它显然是由资产管理器在android中完成的。 Follow this link
注意:AssetManager assetManager = getAssets();
必须位于youractvity.java文件中。
以上是关于如何从可绘制文件夹上的图像获取路径并设置为图像视图,位图?的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中为自定义视图创建setter和getter