我想从url加载图像并将其保存在SD卡中的文件中,然后从文件加载并在图像视图中显示。
所以我试图用毕加索加载图像。但它没有显示在图像视图上。
这是网址:
http://xesoftwares.co.in/contactsapi/profile_images/d34b638b93773140eb94d5f03c20237c.jpg
使用毕加索加载图片。
Picasso.with(MainActivity.this).load(url).into(profileImage);
如何从网址下载图片。将其保存在SD卡中的文件中,然后从文件中加载图像以显示在图像视图上?
请帮忙。谢谢..
答案 0 :(得分:4)
使用GLIDE库自动将图像存储到缓存中.....
Glide.with(context).load(url).into(profileImage);
注意: - 只有您第一次需要互联网才能加载图片。当Image在没有互联网的情况下加载它时。
编辑: - 使用此gradle
compile 'com.github.bumptech.glide:glide:3.7.0'
输出: -
答案 1 :(得分:0)
要将其保存到SD卡中,您必须声明使用权限写入清单中的sd卡读取,还要求用户获取android 5.0+的这些权限。所有这些都在android开发者官方网站上有明确记载。 将MainActivity.class更改为getApplicationContext()
答案 2 :(得分:0)
添加:
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
在您的清单文件中,否则无法下载源。
如果您想将其保存在SD卡中,则需要另外许可:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
为了保存它。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
如果您希望将来获得该文件。
接下来,如果要将其保存到外部目录,可以尝试:
public void setUpDirectory(String folderName,String source){
File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+folderName);
if(!directory.exists() && !directory.isDirectory()) {
directory.mkdirs();
}
URL imageurl = new URL(source);
Bitmap bitmap = BitmapFactory.decodeStream(imageurl.openConnection().getInputStream());
saveFile(directory,bitmap);
}
private void saveFile(File fileName,Bitmap bmp){
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(fileName);
bmp.compress(Bitmap.CompressFormat.PNG, 100, outputStream ); // 100 will be ignored
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if outputStream != null) {
outputStream .close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 3 :(得分:0)
如果您已将图像作为ImageView的背景放入xml中,请将其删除。