3

Frescoを使用して、アプリで GIF をダウンロードして表示しています。クリックした画像を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
    }
});

ImageView を画像として保存するにはどうすればよいですか?の指示に従って、SimpleDraweeView からビットマップを取得しようとしました。、しかしそれgetDrawingCache()はnullを返します

4

2 に答える 2

2

あなたはこのようにすることができます

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;
    }
}
于 2015-08-02T08:27:07.307 に答える
0

画像パイプラインを直接使用して、ディスク キャッシュから GIF を抽出できます。

その後、Java File メソッドを使用してファイル システムに書き込むことができます。

于 2015-06-28T23:22:29.987 に答える