快速分享Fresco缓存图片Via Intent

时间:2016-01-12 13:02:10

标签: android fresco

想要快速快速地共享壁画缓存图像形式loacl存储

  

fresco返回带回调的位图,有时需要时间来获取图像。

     

首先不能通过对存储图像temp的意图需求共享直接位图,然后共享图像的文件路径URI。

            ImageRequest imageRequest = ImageRequestBuilder
                    .newBuilderWithSource(httpUri(article.getImage())).setAutoRotateEnabled(true)
                    .build();
            ImagePipeline imagePipeline = Fresco.getImagePipeline();
            final DataSource<CloseableReference<CloseableImage>>
                    dataSource = imagePipeline.fetchDecodedImage(imageRequest, view.getContext());
            dataSource.subscribe(new BaseBitmapDataSubscriber() {
                @Override
                public void onNewResultImpl(@Nullable Bitmap bitmap) {
                    if (dataSource.isFinished() && bitmap != null) {
                        String pathofBmp = MediaStore.Images.Media.insertImage(view.getContext().getContentResolver(), bitmap, "APp", null);
                        Uri bmpUri = Uri.parse(pathofBmp);
                        ShareCompat.IntentBuilder.from((Activity) parent.getContext())
                                .setChooserTitle(R.string.share)
                                .setText(format("%s via App %s", title, ""))
                                .setSubject(format("%s via App", title))
                                .setStream(bmpUri)
                                .setType("image/jpeg")
                                .startChooser();
                        dataSource.close();

                    }
                    dataSource.close();
                }

3 个答案:

答案 0 :(得分:1)

在上面构建ImageRequest时,请添加以下行:

.setLowestPermittedRequestLevel(BITMAP_MEMORY_CACHE)

然后您可以假设数据源会立即返回,您可以致电DataSource.hasResult()DataSource.getResult()立即获取您的位图。

您仍然必须关注rules for closeable references

答案 1 :(得分:0)

我正在使用不同的方法。只需使用postProcessor来获取位图。

setPostprocessor(new BasePostprocessor() {
            @Override
            public void process(Bitmap bitmap) {
                super.process(bitmap);
                draweeBitmap = bitmap;

            }
        });

现在您拥有了位图,因此您可以在应用中保存某个位置。文件夹或SD卡并分享。

答案 2 :(得分:0)

您不能使用closeableimage,而需要使用CloseableAnimatedImage。 我在同一个问题上苦苦挣扎。