使用glide android库,将图像获取为位图(see glide documentation),然后尝试使用renderscript和ScriptIntrinsicBlur(高斯模糊)对位图进行模糊处理。 (Taken from this stackoverflow post)

 Glide.with(getApplicationContext())
    .load(ImageUrl)
    .asBitmap()
    .into(new SimpleTarget<Bitmap>(300,200) {
        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {

            RenderScript rs = RenderScript.create(mContext); // context = this. this referring to the activity

            final Allocation input = Allocation.createFromBitmap( rs, resource, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT );
            final Allocation output = Allocation.createTyped( rs, input.getType() );
            final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create( rs, Element.U8_4( rs ) );
            script.setRadius(8f);
            script.setInput(input);
            script.forEach(output);
            output.copyTo(resource);

            mImageView.setImageBitmap(resource);
        }
    });

问题在于这是输出,而不是模糊的图像:
android - RenderScript无法正确呈现ScriptIntrinsicBlur,从而导致ScriptIntrinsicBlur呈现彩虹-LMLPHP

任何帮助将不胜感激谢谢。 :)

最佳答案

输入的图像是否可能不是U8_4(即RGBA8888)?您可以从使用“Element.U8_4(rs)”切换为使用“output.getElement()”吗?那可能会做正确的事。如果事实证明该图像不是RGBA8888,则可能至少会得到一个Java异常,该异常描述了底层格式(如果我们的Blur不支持该格式)。

10-08 03:02