Fresco-Source-Analysis icon indicating copy to clipboard operation
Fresco-Source-Analysis copied to clipboard

如何获取控件的图片转化为Bitmap

Open devzhan opened this issue 9 years ago • 5 comments

你好,当我用Fresco的时候采用setController去设置图片,而BaseControllerListener中的onIntermediateImageSet()方法是图片请求成功,控件上面已经显示了图片,现在我想把控件的内容拿到自己对图片内容做处理该如何做呢,采用draweeController.getHierarchy() .getTopLevelDrawable();可以吗?谢谢!

devzhan avatar Jan 13 '16 07:01 devzhan

@zhanxiuwen draweeController.getHierarchy() .getTopLevelDrawable()是无法获取你的目标图片的,因为它是一个ArrayDrawable,里面含有一个Drawable数组,数组中的某一个才是你的目标图片。如果真的想对图片做处理,可以这样:

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse("url"))
          .setPostprocessor((new BasePostprocessor() {
                    @Override
                    public void process(Bitmap bitmap) {
                        super.process(bitmap);
                        //它就是你要的bitmap,在这里处理
                    }
                }).build();

DraweeController controller = Fresco.newDraweeControllerBuilder()
        .setImageRequest(request)
        .build();

draweeView.setController(controller);

desmond1121 avatar Jan 13 '16 09:01 desmond1121

好的谢谢,我已经开始这样做了。但是当遇到一个群组聊天的时候需要多个bitmap来绘制一个复合bitmap。而绘制出来的bitmap存在问题,但是采用imageloader的时候用请求到的bitmap来绘制是没有问题的

devzhan avatar Jan 13 '16 09:01 devzhan

你好,我在这里遇到一个问题,比如说从一个user集合里面用循环去加载这个集合中每个人的图像(采用上面的那种方法)。但并不能加载成功,是否是与request 有关呢?官网上有这个说法 image不知道是否有影响,谢谢!

devzhan avatar Jan 19 '16 08:01 devzhan

@zhanxiuwen 方便的话把相关代码贴出来?这么说我无法知道问题的原因

desmond1121 avatar Jan 19 '16 11:01 desmond1121

你好,我把代码发到你邮箱了。谢谢!

devzhan avatar Jan 20 '16 02:01 devzhan