如何从可绘制文件夹中的图像获取路径并设置为图像视图、位图?
How to get path from image on drawable folder and set as image view, Bitmap?
我的可绘制文件夹中已经有一些来自 android 项目的图片。
我创建了一些对象(代理),然后我需要用我保存在数据库中的这张图片设置 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)
Return 来自 System.out.println
: /2131099732
如果我输入 path1.toString
,则 return 为: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
。
有人可以帮我吗?
你可以试试这个方法:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.id.youResourceId);
您可以将 参考 ID R.drawable.img_name
保存为整数而不是保存路径。
当您需要操作此可绘制对象时,您可以使用该 id 而不是 R.drawable.img_name
。
如果您需要此可绘制对象的位图,请遵循 this
Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
saved_id);
这样试试
public int getImage(String imageName) {
int drawableResourceId = context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
return drawableResourceId;
}
在我的项目中,我想从项目文件夹中获取一些图像。所以有一种方法可以在 java class 中获取图像,但是在 .xml 文件中很简单。这显然是由资产管理器在 android 中完成的。
Follow this link
注意: AssetManager assetManager = getAssets();
必须在 youractvity.java 文件中。
我的可绘制文件夹中已经有一些来自 android 项目的图片。
我创建了一些对象(代理),然后我需要用我保存在数据库中的这张图片设置 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)
Return 来自 System.out.println
: /2131099732
如果我输入 path1.toString
,则 return 为: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
。
有人可以帮我吗?
你可以试试这个方法:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.id.youResourceId);
您可以将 参考 ID R.drawable.img_name
保存为整数而不是保存路径。
当您需要操作此可绘制对象时,您可以使用该 id 而不是 R.drawable.img_name
。
如果您需要此可绘制对象的位图,请遵循 this
Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
saved_id);
这样试试
public int getImage(String imageName) {
int drawableResourceId = context.getResources().getIdentifier(imageName, "drawable", context.getPackageName());
return drawableResourceId;
}
在我的项目中,我想从项目文件夹中获取一些图像。所以有一种方法可以在 java class 中获取图像,但是在 .xml 文件中很简单。这显然是由资产管理器在 android 中完成的。
Follow this link
注意: AssetManager assetManager = getAssets();
必须在 youractvity.java 文件中。