-1

I am loading images using Fresco, how can I get the original bitmap size?

This is what I been trying so far

ImageRequest request = ImageRequestBuilder
    .newBuilderWithSource(uri)
    .setImageDecodeOptions(ImageDecodeOptions.newBuilder()
    .setBackgroundColor(Color.GREEN)
    .build())
    .setPostprocessor(new BasePostprocessor() {

        @Override
        public void process(Bitmap bitmap) {
            super.process(bitmap);
            width = bitmap.getWidth();
            height = bitmap.getHeight();
        }

        @Override
        public void process(Bitmap destBitmap, Bitmap sourceBitmap) {
            super.process(destBitmap, sourceBitmap);
        }
    }).build();

But some how it feels that I am not getting the original size there.

Mike
  • 4,550
  • 4
  • 33
  • 47
Ilya Gazman
  • 31,250
  • 24
  • 137
  • 216

2 Answers2

1

Use ControllerListener as explained in the documentation.

plamenko
  • 1,068
  • 1
  • 8
  • 10
0

    private void monitorImageSize(ImagePerfData imagePerfData, String coverPath) {
        if (imagePerfData == null) {
            return;
        }
        ImageInfo imageInfo = imagePerfData.getImageInfo();
        if (imageInfo == null) {
            return;
        }
        Log.e("xxx",
                "width = " + imageInfo.getWidth() + ", imageHeight = " + imageInfo.getHeight() +
                        ", url= " + coverPath);

        if (imageInfo.getWidth() > 600 || imageInfo.getHeight() > 600) {
            Log.e("xxx", "monitorImageSize url = " + coverPath);
            ToastUtils.showLong("image too big! url = " + coverPath);
        }
    }

DraweeController controller = Fresco.newDraweeControllerBuilder()
                        .setUri(coverPath)
                        .setAutoPlayAnimations(true)
                        .setPerfDataListener(new ImagePerfDataListener() {
                            @Override
                            public void onImageLoadStatusUpdated(ImagePerfData imagePerfData, int imageLoadStatus) {
                                monitorImageSize(imagePerfData, coverPath);
                            }

                            @Override
                            public void onImageVisibilityUpdated(ImagePerfData imagePerfData, int visibilityState) {
                                monitorImageSize(imagePerfData, coverPath);
                            }
                        })
                        .build();
kaitian521
  • 548
  • 2
  • 10
  • 25