Używając biblioteki androida poślizgu otrzymuję obraz jako bitmapę (see glide documentation), a następnie próbuję zamazać mapę bitową, używając renderscript i ScriptIntrinsicBlur, który jest rozmycie Gaussa. (Taken from this stackoverflow post)RenderScript nie renderuje poprawnie ScriptIntrinsicBlur, powodując, że ScriptIntrinsicBlur renderuje tęczę kolorów.
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);
}
});
Problemem jest to, że jest to wyjście, zamiast rozmazany obraz:
Każda pomoc będzie mile widziane dzięki. :)
To jest błąd, który otrzymuję: 'android.support.v8.renderscript.RSIllegalArgumentException: Unsuported element type.' Dzięki za próbę pomocy :) – HaloMediaz
Ok. Rozgryzłem problem. Glide ładuje bitmapy w RGB_565. Glides ma opcję użycia ARGB_8888, ale nadal daje mi ten sam problem. Dzięki za pomoc. – HaloMediaz
ScriptIntrinsicBlur nie obsługuje konfiguracji bitmapowych innych niż RGBA_8888. Ale @zinuzoid miał świetne rozwiązanie, które działa dla mnie: sentBitmap.copy (Bitmap.Config.ARGB_8888, true); – goRGon