简体   繁体   English

使用Fresco时如何将图像保存到SD卡?

[英]How to save image to sdcard when using Fresco?

I am using Fresco to download and display Gifs in my app. 我正在使用Fresco在我的应用程序中下载和显示Gif。 I want to save the image to sdcard when click it, but i can't figure out how to do it. 我想在点击它时将图像保存到SD卡,但我无法弄清楚如何做到这一点。

final View view = inflater.inflate(R.layout.fragment_gif_viewer, container, false);
SimpleDraweeView draweeView = (SimpleDraweeView) view.findViewById(R.id.image);
Uri uri = Uri.parse(imageUrl);
DraweeController controller = Fresco.newDraweeControllerBuilder()
        .setUri(uri)
        .setAutoPlayAnimations(true)
        .build();
draweeView.setController(controller);

draweeView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Save the gif to /sdcard/test.gif
    }
});

I try to get the bitmap from the SimpleDraweeView following the instruction of How do I save an ImageView as an image? 我尝试按照如何将ImageView保存为图像的说明从SimpleDraweeView获取位图 , but it's getDrawingCache() returns null ,但它的getDrawingCache()返回null

You can do like this 你可以这样做

ImageRequest downloadRequest = ImageRequest.fromUri(uri);
CacheKey cacheKey = DefaultCacheKeyFactory.getInstance().getEncodedCacheKey(downloadRequest);
if (ImagePipelineFactory.getInstance().getMainDiskStorageCache().hasKey(cacheKey)) {
    BinaryResource resource = ImagePipelineFactory.getInstance().getMainDiskStorageCache().getResource(cacheKey);
    File cacheFile = ((FileBinaryResource) resource).getFile();
    FileInputStream fis = new FileInputStream(cacheFile);
    ImageFormat imageFormat = ImageFormatChecker.getImageFormat(fis);
    switch (imageFormat) {
        case GIF:
        //copy cacheFile to sdcard
        break;
    }
}

You can use the image pipeline directly to extract your GIF from disk cache. 您可以直接使用图像管道从磁盘缓存中提取GIF。

Then you can use Java File methods to write it to the file system. 然后,您可以使用Java File方法将其写入文件系统。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM