Rotación de la matriz de bytes de JPEG después de onPictureTaken
¿Hay una manera de girar la matriz de bytes sin decodificar a Bitmap?
Actualmente en jpeg PictureCallback sólo escribo matriz de bytes directamente al archivo. Pero las imágenes se giran. Me gustaría girarlos sin decodificar a mapa de bits con la esperanza de que esto conservará mi memoria.
- La cámara personalizada Android se bloquea en el curriculum vitae
- No se puede usar la cámara después de apagar la linterna
- MediaRecorder setVideoSize muestra un comportamiento diferente en diferentes dispositivos
- Obtener la extensión de archivo de imágenes seleccionadas de galería o cámara, como cadena
- Acceda simultáneamente a las cámaras frontal y posterior
BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(data, 0, data.length, o); int orientation; if (o.outHeight < o.outWidth) { orientation = 90; } else { orientation = 0; } File photo = new File(tmp, "demo.jpeg"); FileOutputStream fos; BufferedOutputStream bos = null; try { fos = new FileOutputStream(photo); bos = new BufferedOutputStream(fos); bos.write(data); bos.flush(); } catch (IOException e) { Log.e(TAG, "Failed to save photo", e); } finally { IOUtils.closeQuietly(bos); }
- Cómo jugar el sonido nativo de la cámara en Android
- PreviewCallback onPreviewFrame no cambia los datos
- ¿Cuál es la forma correcta de implementar Toque para enfocar para la cámara?
- ¿Cómo tomar un tiempo hasta que el enfoque se está configurando en la imagen y que tomar una foto?
- Tamaños de imagen compatibles con la cámara Android
- Grabación de vídeo de un servicio
- Cámara con sonido de obturador personalizado
- Android captura la foto putExtra (MediaStore.EXTRA_OUTPUT, Uri.fromFile (photoFile)); los datos son nulos
No creo que haya tal posibilidad. El orden de los bytes depende de la codificación de la imagen (png, jpeg). Así que se ven obligados a decodificar la imagen para hacer algo con ella.
Puede establecer la rotación JPEG a través del encabezado Exif sin decodificarlo. Este es el método más eficiente, pero algunos espectadores pueden mostrar una imagen girada.
Como alternativa, puede utilizar la rotación JPEG sin pérdida . Desafortunadamente, no soy consciente de las implementaciones Java gratuitas de este algoritmo.
Actualización en SourceForge, hay una clase Java open source LLJTran . El puerto de Android está en GitHub .
Prueba esto. Resolverá el propósito.
Bitmap storedBitmap = BitmapFactory.decodeByteArray(data, 0, data.length, null); Matrix mat = new Matrix(); mat.postRotate("angle"); // angle is the desired angle you wish to rotate storedBitmap = Bitmap.createBitmap(storedBitmap, 0, 0, storedBitmap.getWidth(), storedBitmap.getHeight(), mat, true);
- Cómo desarrollar el backend de Google App Engine con Android Studio
- Prueba de unidad en la función de extensión de Kotlin en las clases de SDK de Android