Android getPixels () posiblemente un error tonto?
Bueno, esto es bastante simple de entender, pero por alguna extraña razón no puedo conseguir que funcione .. He simplificado este ejemplo del código real.
InputStream is = context.getResources().openRawResource(R.raw.someimage); Bitmap bitmap = BitmapFactory.decodeStream(is); try { int[] pixels = new int[32*32]; bitmap.getPixels(pixels, 0, 800, 0, 0, 32, 32); } catch(ArrayIndexOutOfBoundsException ex) { Log.e("testing", "ArrayIndexOutOfBoundsException", ex); }
¿Por qué debo seguir recibiendo una ArrayIndexOutOfBoundsException? La matriz de píxeles es 32×32 y en la medida en que estoy enterado que estoy usando correctamente getPixels. Las dimensiones de la imagen son 800×800 y estoy tratando de recuperar una sección 32×32. La imagen es un PNG de 32 bits que se informa como ARGB-8888.
- Java.lang.OutOfMemoryError - BitmapFactory.decode (strPath)
- Android: desliza la imagen a través de "anulación" y "fitCenter" deforma Bitmap
- Android: Guardar Bitmap en la Galería ==> Tiempo creado incorrectamente
- Convertir imagen a mapa de bits en android
- Crear Bitmap de byteArray en android
¿Algunas ideas? Incluso si estoy siendo un idiota! Estoy a punto de tirar el teclado de la ventana: D
- Los bordes en la imagen no son suaves después de setpixels en android
- RenderScript no procesa ScriptIntrinsicBlur correctamente, haciendo que ScriptIntrinsicBlur genere un arco iris de colores
- Android: cargador de imágenes universal cargar imagen grande
- Cómo cambiar el tamaño del mapa de bits después de capturar la imagen a través de mi aplicación
- Bitmaps en Android
- ¿Cómo puedo pasar un objeto Bitmap de una actividad a otra?
- Android: Cómo utilizar grantUriPermission para poder crear y enviar un correo electrónico con un archivo adjunto de mapa de bits
- ¿Cómo subir varios archivos de imagen en el servidor?
Te estás desbordando el búfer de destino porque estás pidiendo un paso de 800 entradas entre filas.
Utilice el ancho de mapa de bits como stride, en su caso 32
bitmap.getPixels(pixels, 0, 32, 0, 0, 32, 32);
Cada hilera de fila con 800 causas ur pixelarray para salir de límite
"Estoy a punto de lanzar el teclado de la ventana" funny lol
Usted obtiene la excepción OutOfBounds becacuse stride se aplica a la matriz de píxeles no a la bitmap original, por lo que en su caso, usted está tratando de recuperar 32 * 800 píxeles que no encaja en su matriz.
- Conversión no verificada
- La clase debe ser declarada abstracta o implementar un error de método abstracto