Pregunta

Tengo una aplicación de C++ que se comunica con una cámara y capturas de imagen raw de datos.Luego tengo un Byte[] en C++, que quiero enviar a Java con JNI.

Sin embargo, tengo que convertir el raw Byte[] para un real (formato de archivo.bmp era mi primera opción).Me puede hacer esto fácilmente si lo escribo desde C++ a un archivo en el disco duro, utilizando BITMAPFILEINFO y BITMAPHEADERINFO, pero no sé cómo uno podría ir sobre el envío de la totalidad de la-formato de Java.

Entonces pensé en enviar sólo la cruda byte[] datos usando JNI y, a continuación, convertirlo a .bmp, pero me parece que no puede encontrar en cualquier buena biblioteca para hacer esto en Java.

Cuál sería mi mejor opción?La conversión de la imagen en C++ y, a continuación, enviarlo usando JNI o enviar los datos sin procesar para Java y, a continuación, convertirlo a .bmp?¿Cómo puedo más sencilla de lograr esto?

¿Fue útil?

Solución

Sólo dos líneas en Java 1.5:

BufferedImage image = ImageIO.read( new ByteArrayInputStream( byteArray ) );
ImageIO.write(image, "BMP", new File("filename.bmp"));

Java (en Windows) sabe cómo exportar jpg, png y bmp como lo que yo sé.

Otros consejos

No hay necesidad de hacer nada de eso.Gire a la matriz de bytes en un InputStream y piensos, que a ImageIO.leer();

public Image getImageFromByteArray(byte[] byteArray){
    InputStream is = new ByteArrayInputStream(byteArray);
    return ImageIO.read(is);
} 

De esta forma se crea un objeto de la Imagen a partir de su matriz de bytes, que es muy trivial, de hecho, para mostrar dentro de un componente de la gui.Quieres guardar, puede utilizar el ImageIO clase para que así.

public void saveImage(Image img, String fileFormat, File f){
    ImageIO.write(img, fileFormat, f);
}

Si usted sabe cómo escribir como .bmp a un archivo, puede usar (casi) el mismo código para escribir en un búfer de memoria en su lugar.Que la memoria búfer se puede enviar a Java, y tienen que decodificar el formato como Stroboskop o Markus Koivisto mencionado.Si edita tu pregunta para incluir la manera de escribir los datos a un .bmp el archivo, me podría sugerir cómo convertir eso en una operación de la memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top