下载图像并保存

时间:2015-10-11 12:41:22

标签: android android-activity picasso

我正在学习一个学校的android项目。 我需要一个下载图片的下载按钮(当我们上课时) 然后在另一个活动中显示它(即使在离线模式下,也在退出后)

我已尝试过毕加索,但我无法将其保存并在离线模式下使用。

3 个答案:

答案 0 :(得分:2)

为了支持离线模式,您需要将图像保存在磁盘上,因为清除缓存后,图像也会被清除。

您可以轻松使用Glide解决此问题,也可以存储在设备上并检索

您可以在此处了解有关Glide的更多信息http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en

/** Download the image using Glide **/

Bitmap theBitmap = null;
theBitmap = Glide.
    with(YourActivity.this).
    load("Url of your image").
    asBitmap().
    into(-1, -1).
    get();

   saveToInternalStorage(theBitmap, getApplicationContext(), "your preferred image name");

/** Save it on your device **/

public String saveToInternalStorage(Bitmap bitmapImage, Context context, String name){


        ContextWrapper cw = new ContextWrapper(context);
        // path to /data/data/yourapp/app_data/imageDir

        String name_="foldername"; //Folder name in device android/data/
        File directory = cw.getDir(name_, Context.MODE_PRIVATE);

        // Create imageDir
        File mypath=new File(directory,name);

        FileOutputStream fos = null;
        try {

            fos = new FileOutputStream(mypath);

            // Use the compress method on the BitMap object to write image to the OutputStream
            bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        Log.e("absolutepath ", directory.getAbsolutePath());
        return directory.getAbsolutePath();
    }

/** Method to retrieve image from your device **/

public Bitmap loadImageFromStorage(String path, String name)
    {
        Bitmap b;
        String name_="foldername";
        try {
            File f=new File(path, name_);
            b = BitmapFactory.decodeStream(new FileInputStream(f));
            return b;
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        return null;
    }

/** Retrieve your image from device and set to imageview **/
//Provide your image path and name of the image your previously used.

Bitmap b= loadImageFromStorage(String path, String name)
ImageView img=(ImageView)findViewById(R.id.your_image_id);
img.setImageBitmap(b);

答案 1 :(得分:0)

您可以使用名为通用图片加载器的Android库:

https://github.com/nostra13/Android-Universal-Image-Loader

答案 2 :(得分:0)

感谢@Droidman: How to download and save an image in Android

  

当然,您可以自己执行下载和管理图像,   但如果你的项目已经相当复杂,那么有很多   库周围,你不需要重新发明轮子。我没赢   这次发布代码,因为有很多例子,但我要去   告诉你有关图像的2个最有用的库(IMO)   下载。

     1)Android排球。 Google和Google创建的强大网络库   官方文件涵盖。发布或获取数据,图像,   JSON - 凌空将为您管理它。使用凌空只为图像   在我看来,下载有点矫枉过正。

     

2)毕加索

     

图像下载和缓存,非常适合   的ListView / GridView的/ RecyclerView。 Apache 2.0许可证。

     

3)Fresco

     

由Facebook创建的新图像加载库。进步   JPEG流媒体,GIF等。 Apache 2.0