如何将过滤器应用于Android ImageLoader加载的图像?

时间:2013-04-05 01:26:51

标签: android android-image

我正在使用Android-Universal-Image-Loader库来加载我的图像并进行缓存等。我正在尝试使用JH Labs库对其应用盒子模糊过滤器。我试图在onLoadingComplete事件中应用过滤器,但它似乎不像那里的位图是可变的。有没有人有过将过滤器应用于Android ImageLoader加载的位图的经验?

1 个答案:

答案 0 :(得分:3)

我终于得到了这个工作。这是在onLoadingComplete事件中应用过滤器的正确方法。但是,由于位图存在不可变,因此关键是传入ImageView并再次调用setImageBitmap方法将过滤后的位图设置为ImageView:

public void displayImageBlurred(String imageUri, final ImageView imageView) {
    this.displayImage(imageUri, imageView, true, 0, new SimpleImageLoadingListener() {

        @Override
        public void onLoadingComplete(Bitmap loadedImage) {
            int width = loadedImage.getWidth();
            int height = loadedImage.getHeight();

            BoxBlurFilter filter = new BoxBlurFilter();
            filter.setRadius(8.5f);

            int[] src = AndroidUtils.bitmapToIntArray(loadedImage);
            src = filter.filter(src, width, height);

            loadedImage = Bitmap.createBitmap(src, width, height, Config.ARGB_8888);
            imageView.setImageBitmap(loadedImage);
        }
    });
}

public void displayImage(String imageUri, final ImageView imageView, boolean callBackIfCached, long startTime, ImageLoadingListener listener) {
    ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.displayImage(imageUri, imageView, defaultOptions, listener);
}