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.

¿Algunas ideas? Incluso si estoy siendo un idiota! Estoy a punto de tirar el teclado de la ventana: D

Te estás desbordando el búfer de destino porque estás pidiendo un paso de 800 entradas entre filas.

http://developer.android.com/reference/android/graphics/Bitmap.html#getPixels%28int%5B%5D,%20int,%20int,%20int,%20int,%20int,%20int%29

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.

  • Cómo convertir Bitmap a Base64 String
  • Cómo obtener un objeto Uri desde Bitmap
  • Campo BitmapFactory.Options.inTempStorage
  • Android java porcentaje bitmap píxel diferencia entre dos imágenes
  • Cómo solucionar problemas de java.lang.OutOfMemoryError en Android
  • Pasar Bitmap a otra actividad termina en RunTimeException
  • Imagen de mapa de bits con esquinas redondeadas con trazo
  • Cómo hacer que una imagen encaje en un marco circular en android
  • Creación de un mapa de bits escalado con createScaledBitmap en Android
  • Cómo teñir un mapa de bits de Android en blanco?
  • DecodeByteArray y copyPixelsToBuffer no funcionan. SkImageDecoder :: Factory devuelto null
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.