"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué todos los bytes en mi buffer son 0 después de llamar a copyPixelsToBuffer() en un mapa de bits?

¿Por qué todos los bytes en mi buffer son 0 después de llamar a copyPixelsToBuffer() en un mapa de bits?

Publicado el 2024-11-25
Navegar:751

Why are all bytes in my buffer 0 after calling copyPixelsToBuffer() on a Bitmap?

Java: conversión de mapa de bits en matriz de bytes

Al intentar convertir un objeto de mapa de bits en una matriz de bytes utilizando el código proporcionado, los usuarios pueden encontrar un problema donde todos los bytes en el búfer permanecen en 0 después de llamar a copyPixelsToBuffer(). A pesar de la inmutabilidad del mapa de bits devuelto por la cámara, no debería afectar el proceso de copia.

Posible causa raíz:

El fragmento de código utiliza la clase ByteBuffer para asignar memoria y copiar el mapa de bits. píxeles en el búfer. Sin embargo, accede directamente a un búfer subyacente sin configurar su desplazamiento correctamente. Esto puede provocar que el método get() devuelva solo 0 valores.

Solución:

Para rectificar este problema, considere utilizar el siguiente enfoque:

Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();

En este código mejorado:

  • Se crea una secuencia ByteArrayOutputStream, que se puede utilizar para capturar datos que se convertirán en una matriz de bytes.
  • El método compress() se invoca en el objeto Bitmap para convertir sus píxeles al formato PNG y escribirlos en el ByteArrayOutputStream.
  • Finalmente, el método toByteArray() convierte el contenido de ByteArrayOutputStream en una matriz de bytes.

Al utilizar este enfoque, puede convertir de manera efectiva un objeto Bitmap en una matriz de bytes sin Encontrando el problema de desbordamiento del búfer.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3