我想在不使用id的情况下在imageview中显示图像。
我将所有图像放在原始文件夹中并打开
try {
String ss = "res/raw/images/inrax/3150-MCM.jpg";
in = new FileInputStream(ss);
buf = new BufferedInputStream(in);
Bitmap bMap = BitmapFactory.decodeStream(buf);
image.setImageBitmap(bMap);
if (in != null) {
in.close();
}
if (buf != null) {
buf.close();
}
} catch (Exception e) {
Log.e("Error reading file", e.toString());
}
但这不起作用我想使用其路径而非名称来访问图像
答案 0 :(得分:1)
使用openRawResource()
读取字节流这样的事情应该有效
InputStream is = context.getResources().openRawResource(R.raw.urfilename);
检查此链接
http://developer.android.com/guide/topics/resources/accessing-resources.html#ResourcesFromCode
它清楚地说明了以下
虽然不常见,但您可能需要访问原始文件和目录。如果这样做,那么在res /中保存文件将不适合您,因为从res /读取资源的唯一方法是使用资源ID
如果您想提供类似于您的代码中提到的文件名,您可能需要将其保存在资源文件夹中。
答案 1 :(得分:1)
您可以将Resources.getIdentifier(name, type, package)
与原始文件一起使用。这将为您获取id,然后您可以继续使用setImageResource(id)或其他任何内容。
int id = getResources().getIdentifier("3150-MCM", "raw", getPackageName());
if (id != 0) //if it's zero then its not valid
image.setImageResource(id);
你想要什么?它可能不喜欢多个文件夹,但值得一试。
答案 2 :(得分:1)
尝试{ //获取AssetManager的参考 AssetManager mngr = getAssets();
// Create an input stream to read from the asset folder
InputStream ins = mngr.open(imdir);
// Convert the input stream into a bitmap
img = BitmapFactory.decodeStream(ins);
} catch (final IOException e) {
e.printStackTrace();
}
此处图像目录是资产路径
像
assest - >图像 - > somefolder - > some.jpg
然后路径
图像/ somefolder / some.jpg
现在不需要图像的资源ID,您可以使用此
在运行时填充图像