今日长缨在手,何时缚住苍龙。这篇文章主要讲述直接从Android活动下载图像相关的知识,希望能为你提供帮助。
我在我的应用程序中显示图像,我想在每个图像后添加下载按钮,当用户点击它时,图像将自动保存到文件夹。可能吗?
答案如果您已将文件保存在应用程序中,请将其复制到此公用文件夹File imagePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
然后使用here提供的技术将图片扫描到图库中。现在,当用户打开图库时,他们将看到图片。
另一答案之前我尝试过Universal Image Loader和Picasso。你看到你需要和女巫对你来说已经足够了。也有更好的决定阅读this one和this one。它可能会帮助你:
文章图片
另一答案您可以使用Glide下载图像,我认为它比毕加索更好,因为它扩展了毕加索。有关更多信息,请参阅https://github.com/bumptech/glide。为此你只需要包括
compile 'com.github.bumptech.glide:glide:3.6.1'
进入依赖关系然后只需添加此代码行Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
`
其中
http://goo.gl/gEgYUd
是要传递的URL。使用它之后,您不必维护缓存。享受你的代码:)
另一答案
private static void persistImage(Bitmap bitmap, String name) {
File filesDir = getAppContext().getFilesDir();
File imageFile = new File(filesDir, name + ".jpg");
OutputStream os;
try {
os = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
os.flush();
os.close();
} catch (Exception e) {
Log.e(getClass().getSimpleName(), "Error writing bitmap", e);
}
}
另一答案您可以使用Picasso库来显示图像。在build.gradle依赖项中添加以下代码:
compile 'com.squareup.picasso:picasso:2.4.0'
现在使用它来显示图像,您可以在按钮的onClick()方法中添加此代码。
File file = new File(imagePath);
if(file.exists()) {
Picasso.with(context).load(file).skipMemoryCache().placeholder(R.drawable.placeholder).into(yourImageView);
}
else {
Picasso.with(context).load(imageUrl).skipMemoryCache().placeholder(R.drawable.placeholder).into(yourImageView, new PicassoCallBack(yourImageView,imagePath));
}
picassoCallBack类将如下所示:
public class PicassoCallBack extends Callback.EmptyCallback {
ImageView imageView;
String filename;
public PicassoCallBack(ImageView imageView, String filename) {
this.imageView = imageView;
this.filename = filename;
}
@Override public void onSuccess() {
// Log.e("picasso", "success");
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
try {
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos1);
// FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
File file = new File(filename);
FileOutputStream outStream = new FileOutputStream(file);
outStream.write(baos1.toByteArray());
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onError() {
Log.e("picasso", "error");
}
}
【直接从Android活动下载图像】希望它能完成你的工作。
推荐阅读
- Android SkImageDecoder :: Factory返回null错误
- 在android下载文件时更新进度条
- Android Firebase下载声音
- Android Studio(如何从自动完成中重新包含已排除的库())
- Chrome for Android显示自动填充即使自动填充(关闭)
- android在java.util.Objects.requireNonNull中获取空指针异常(Objects.java:203)
- 尝试在Android Studio中运行项目时,InstantRunNotificationTask中的NullPointerException
- 将列表添加到Cloud Firebase - Android
- getApplicationContext给出空指针异常[重复]