Utilizzando la libreria di glide Android ottengo l'immagine come bitmap (see glide documentation) e quindi provo a sfocare la bitmap, utilizzando renderscript e ScriptIntrinsicBlur, che è un sfocatura gaussiana. (Taken from this stackoverflow post)RenderScript non esegue il rendering di ScriptIntrinsicBlur correttamente, causando ScriptIntrinsicBlur per il rendering di un arcobaleno di colori
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);
}
});
Il problema è che questo è l'uscita, piuttosto che un'immagine sfocata:
Qualsiasi aiuto sarebbe molto apprezzato grazie. :)
Questo è l'errore che ottengo: 'android.support.v8.renderscript.RSIllegalArgumentException: tipo di elemento non selezionato.' Grazie per aver cercato di aiutare :) – HaloMediaz
Ok. Ho capito qual è il problema. Glide carica bitmap in RGB_565. Glides ha un'opzione per usare ARGB_8888, ma questo mi dà lo stesso problema. Grazie per l'aiuto. – HaloMediaz
ScriptIntrinsicBlur non supporta le configurazioni bitmap non RGBA_8888. Ma @zinuzoid aveva un'ottima soluzione che funziona per me: sentBitmap.copy (Bitmap.Config.ARGB_8888, true); – goRGon