Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Defecto de la imagen con ScriptIntrinsicBlur de la biblioteca de soporte

Estoy intentando difuminar una imagen con ScriptIntrinsicBlur de la biblioteca de la ayuda de RenderScript. Estoy usando gradle y he utilizado este acercamiento para utilizar la versión de la biblioteca de la ayuda de RenderScript.

En mi Nexus 4, todo funciona bien y es muy rápido, pero cuando lo pruebo en mi Samsung Galaxy S con Android 2.3.3, la imagen que obtengo se parece a esto:

  • Cuando llama a initLoader en Fragment?
  • GetActivity (). FindViewById devuelve null, llamado desde el fragmento onActivityCreated
  • FindViewById dentro del fragmento
  • ¿Qué diferencia hay entre SQLite y SQL?
  • ¿Cómo enviar y recibir SMS desde la aplicación Android?
  • ¿Puedes crear React Native apps (aplicación para Android) en Ubuntu?
  • Imagen ruidosa

    Estoy usando la extremidad romana de Nurik para tener el ancho del mapa de bits como múltiplo de 4, pero no pienso que ésta es la causa de mi problema. Mi código borroso se ve exactamente como en este post. Gracias por cualquier consejo.

    Aquí está mi código:

    Obtención de mapa de bits de la vista y cambio de escala del mapa de bits:

    public static Bitmap loadBitmapFromView(View v) { v.setDrawingCacheEnabled(false); v.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); v.setDrawingCacheEnabled(true); Bitmap b = v.getDrawingCache(); return b; } public static Bitmap scaledBitmap(Bitmap dest, float scale) { int scaledWidth = (int) (scale * dest.getWidth()); if (scaledWidth % 4 != 0) { //workaround for bug explained here https://plus.google.com/+RomanNurik/posts/TLkVQC3M6jW scaledWidth = (scaledWidth / 4) * 4; } return Bitmap.createScaledBitmap(dest, scaledWidth, (int) (scale * dest.getHeight()), true); } 

    Código Renderscript:

     Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); final RenderScript rs = RenderScript.create(context); final Allocation input = Allocation.createFromBitmap(rs, sentBitmap, 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(radius); script.setInput(input); script.forEach(output); output.copyTo(bitmap); return bitmap; 

    He notado este error en la salida logcat:

    E / RenderScript_jni: No hay métodos GC

    Después de que mi aplicación está congelada.

  • La elevación no funciona para ImageView
  • Establecer texto en TextView utilizando Html.fromHtml
  • Uncaught ReferenceError: miFunción no está definida en null: 1 Excepción de Android en la vista web
  • ¿Qué solución basada en plataformas móviles basada en Ruby utilizar?
  • Android ListView Footer View no se coloca en la parte inferior de la pantalla
  • Actualización dinámica de un adaptador AutoCompleteTextView
  • One Solution collect form web for “Defecto de la imagen con ScriptIntrinsicBlur de la biblioteca de soporte”

    Estaba obteniendo una imagen muy similar a la ScriptInstinsicBlur en mi aplicación. Tomó un rato para calcular esto hacia fuera pero resulta que los métodos de GetFrameAt de MediaMetadataRetiever devuelven un config del mapa de bits que sea RGB_565. Aplicar el desenfoque en renderscript le da los resultados funky porque aparentemente no funciona en 565 píxeles.

    Convertir mi mapa de bits a un ARGB_8888 y luego entregarlo al renderscript me dio el desenfoque que estaba buscando.

    Espero que esto ayude a alguien más.

    Este es el método que encontré para convertirlo. (Es de un post SO no tengo bookmarked)

      private Bitmap RGB565toARGB888(Bitmap img) { int numPixels = img.getWidth()* img.getHeight(); int[] pixels = new int[numPixels]; //Get JPEG pixels. Each int is the color values for one pixel. img.getPixels(pixels, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight()); //Create a Bitmap of the appropriate format. Bitmap result = Bitmap.createBitmap(img.getWidth(), img.getHeight(), Bitmap.Config.ARGB_8888); //Set RGB pixels. result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight()); return result; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.