首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Android通用图像加载程序中保存图像?

如何在Android通用图像加载程序中保存图像?
EN

Stack Overflow用户
提问于 2014-08-18 16:18:30
回答 2查看 5K关注 0票数 0

Lazy-List中,我使用此代码,并在名为LazyList的文件夹中存储图像

ImageLoader imageLoader=new ImageLoader(context); imageLoader.DisplayImage(url, imageView);

但是在Universal-Image-Loader中我使用这个

代码语言:javascript
复制
 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())    
            .build();
    ImageLoader.getInstance().init(config);
    img = (ImageView) this.findViewById(R.id.test_id);
    ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.displayImage(URL.RECIPE_IMG_URL,img);

但是,每次它使用互联网获取图像,并且没有将我的图像存储在任何文件夹中时,我都会将.diskCache(new UnlimitedDiscCache(new File("myFolder")))添加到config中,而不会在myFolder.Any ideas中存储任何内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-19 05:01:59

我找到了答案。默认情况下,缓存是禁用的,我应该将DisplayImageOptions添加到ImageLoaderConfiguration

这是代码

代码语言:javascript
复制
   DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                .defaultDisplayImageOptions(defaultOptions)
                .build();
票数 4
EN

Stack Overflow用户

发布于 2014-08-18 17:56:40

您必须将图像保存在onLoadingComplete

onLoadingComplete上,您必须将bitmap保存到变量bitmap

代码语言:javascript
复制
imageLoader.getInstance().displayImage(imagePath, imageView, options, new SimpleImageLoadingListener() {
        @Override
        public void onLoadingStarted(String imageUri, View view) {
            spinner.setVisibility(View.VISIBLE);
        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
            String message = null;
            switch (failReason.getType()) {
            case IO_ERROR:
                message = "Input/Output error";
                break;
            case DECODING_ERROR:
                message = "Image can't be decoded";
                break;
            case NETWORK_DENIED:
                message = "Downloads are denied";
                break;
            case OUT_OF_MEMORY:
                message = "Out Of Memory error";
                break;
            case UNKNOWN:
                message = "Unknown error";
                break;
            }


        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

            showedImgae = loadedImage;

        }
    });

现在单击保存按钮/如果您想保存Bitmap/Image以保存SDCard,请使用以下命令

代码语言:javascript
复制
 public void downloadImage(){

    String root = Environment.getExternalStorageDirectory().toString();
    File myDir = new File(root + "/DCIM/youfoldername");    
    myDir.mkdirs();
    Random generator = new Random();
    int n = 10000;
    n = generator.nextInt(n);
    String fname = "imagename-"+ n +".jpg";
    File file = new File (myDir, fname);
    if (file.exists ()) file.delete (); 
    try {
        FileOutputStream out = new FileOutputStream(file);
        showedImgae.compress(Bitmap.CompressFormat.JPEG, 100, out);
        Toast.makeText(MyActivity.this, "Image Saved", Toast.LENGTH_SHORT).show();
        out.flush();
        out.close();

    } catch (Exception e) {
        e.printStackTrace();
    }

    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    Uri contentUri = Uri.fromFile(file);
    mediaScanIntent.setData(contentUri);
    getApplicationContext().sendBroadcast(mediaScanIntent);
}

希望它能帮到你..。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25367727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档