无法使用毕加索从磁盘加载图像
Can't load image from disk with picasso
首先,我在 Whosebug 和互联网上搜索并找到了很多答案,但是当我尝试这些答案时,没有答案可以解决我的问题。在我的项目中,我创建了一个名为 files
.
的目录
Picasso.with(MainActivity.this).load("file:///files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
或
Picasso.with(MainActivity.this).load("/files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
或
File f = new File("files/img_4");
Picasso.with(MainActivity.this).load(f).error(R.drawable.eboss).into(imgArticle);
或
Picasso.with(MainActivity.this).load("file:/files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
但没有任何效果,我只看到错误图像。
Picasso
将从您设备上的 SD 卡加载图像,而不是从您的 AndroidStudio
项目加载图像。你可以做的是将你的图片移动到 drawable-nodpi
文件夹中(如果它不存在则创建它),然后你可以加载图片
Picasso.with(context).load(R.drawable.img_4).error(R.drawable.e;boss).into(imgArticle);
如果您想将文件作为 assets
的一部分,那么您的目录应该被称为 assets
而不是 files
。你可以阅读更多here
您也可以从文件加载图像。 Picasso 允许 that.Here 是来自 Picasso。
RESOURCE LOADING
Resources, assets, files, content providers are all supported as image sources.
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);
load(new File(...)) - 但是这里的文件必须是在 /data/data/package.name/...
中创建的文件
因此要么将文件复制到 assets,要么将路径指定到 /data/data/package.name/... 或从 sdcard。参见 to know how to load from sdcard. You can create a file here using getFilessDir()。
我认为 android 项目结构中没有文件/文件夹。你可能想看看 Managing Projects Overview.
根据对你的问题的评论,我认为你想使用 "files" 文件夹的原因是你想通过从数据库中检索的名称来选择图像。
如果图像仍保存在可绘制文件夹中(通常是这种情况),则很有可能发生同样的情况。
您可以使用从数据库中选择的名称获取可绘制资源,如下所示:
Drawable d= DrawableManager.getDrawable("img_4.png");
这将减少处理器在查找和读取存储时的负载以及更少的代码。
如果您必须通过图像名称获取资源 ID,请使用:
int drawableResourceId = this.getResources().getIdentifier("drawableName", "drawable", this.getPackageName());
然后传递整数 id 而不是 R.drawable.drawableName
首先,我在 Whosebug 和互联网上搜索并找到了很多答案,但是当我尝试这些答案时,没有答案可以解决我的问题。在我的项目中,我创建了一个名为 files
.
Picasso.with(MainActivity.this).load("file:///files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
或
Picasso.with(MainActivity.this).load("/files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
或
File f = new File("files/img_4");
Picasso.with(MainActivity.this).load(f).error(R.drawable.eboss).into(imgArticle);
或
Picasso.with(MainActivity.this).load("file:/files/img_4.jpg").error(R.drawable.eboss).into(imgArticle);
但没有任何效果,我只看到错误图像。
Picasso
将从您设备上的 SD 卡加载图像,而不是从您的 AndroidStudio
项目加载图像。你可以做的是将你的图片移动到 drawable-nodpi
文件夹中(如果它不存在则创建它),然后你可以加载图片
Picasso.with(context).load(R.drawable.img_4).error(R.drawable.e;boss).into(imgArticle);
如果您想将文件作为 assets
的一部分,那么您的目录应该被称为 assets
而不是 files
。你可以阅读更多here
您也可以从文件加载图像。 Picasso 允许 that.Here 是来自 Picasso。
RESOURCE LOADING
Resources, assets, files, content providers are all supported as image sources.
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.with(context).load(new File(...)).into(imageView3);
load(new File(...)) - 但是这里的文件必须是在 /data/data/package.name/...
中创建的文件因此要么将文件复制到 assets,要么将路径指定到 /data/data/package.name/... 或从 sdcard。参见
我认为 android 项目结构中没有文件/文件夹。你可能想看看 Managing Projects Overview.
根据对你的问题的评论,我认为你想使用 "files" 文件夹的原因是你想通过从数据库中检索的名称来选择图像。
如果图像仍保存在可绘制文件夹中(通常是这种情况),则很有可能发生同样的情况。
您可以使用从数据库中选择的名称获取可绘制资源,如下所示:
Drawable d= DrawableManager.getDrawable("img_4.png");
这将减少处理器在查找和读取存储时的负载以及更少的代码。
如果您必须通过图像名称获取资源 ID,请使用:
int drawableResourceId = this.getResources().getIdentifier("drawableName", "drawable", this.getPackageName());
然后传递整数 id 而不是 R.drawable.drawableName