【问题标题】:Quick Share Fresco cached image Via Intent通过 Intent 快速分享 Fresco 缓存图像
【发布时间】:2018-06-21 07:56:55
【问题描述】:

想要更快更快速地共享 fresco 缓存图像表单 loacl 存储

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

无法通过 Intent 共享直接位图,需要先存储图像临时然后共享图像的文件路径 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();
                }

【问题讨论】:

标签: android fresco


【解决方案1】:

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

.setLowestPermittedRequestLevel(BITMAP_MEMORY_CACHE)

那么你可以假设数据源会立即返回,你可以调用DataSource.hasResult()DataSource.getResult()来立即获取你的位图。

你还是要关注rules for closeable references

【讨论】:

    【解决方案2】:

    我正在使用不同的方法。只需使用后处理器来获取位图。

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

    现在您有了位图,因此您可以保存在应用程序的某个位置。文件夹或 SD 卡并共享它。

    【讨论】:

      【解决方案3】:

      你不能使用closeableimage你需要使用CloseableAnimatedImage。 我正在努力解决同样的问题。

      【讨论】:

        猜你喜欢
        • 2013-10-06
        • 2019-06-19
        • 1970-01-01
        • 2014-08-10
        • 2012-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多