Frage

Ich habe eine C ++-Anwendung, die mit einer Kamera kommuniziert und rohe Bilddaten holt. Ich habe dann ein Byte [] in C ++, das ich mit JNI an Java senden möchte.

Ich muss jedoch das RAW -Byte [] in ein echtes Dateiformat konvertieren (.BMP war meine erste Wahl). Ich kann dies einfach tun, wenn ich es von C ++ in eine Datei auf dem Hartantrieb schreibe, indem ich BitmaPFileInfo und Bitmapheaderinfo verwenden, aber ich weiß nicht, wie man das gesamte Format an Java senden würde.

Dann dachte ich darüber nach, nur die RAW -Byte [] -Daten mit JNI zu senden und sie dann in .bmp zu konvertieren, aber ich kann keine gute Bibliothek dafür in Java finden.

Was wäre meine beste Wahl? Konvertieren des Bildes in C ++ und dann mit JNI oder senden Sie die Rohdaten an Java und konvertieren Sie es dann in .bmp? Wie würde ich das am einfachsten erreichen?

War es hilfreich?

Lösung

Es sind nur zwei Zeilen in Java 1.5:

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

Java (unter Windows) weiß, wie ich JPG, PNG und BMP soweit ich weiß, exportieren.

Andere Tipps

Es ist nicht nötig, etwas davon zu tun. Verwandeln Sie das Byte -Array in einen Inputstream und füttern Sie das zu imageio.read ();

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

Dadurch wird ein Bildobjekt aus Ihrem Byte -Array erstellt, das dann in der Tat sehr trivial ist, in einer GUI -Komponente anzuzeigen. Wenn Sie es speichern möchten, können Sie dafür auch die Imageio -Klasse verwenden.

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

Wenn Sie wissen, wie man schreibt als .bmp In einer Datei können Sie (fast) den gleichen Code zum Schreiben in einen Speicherpuffer verwenden. Dieser Speicherpuffer können Sie an Java versenden und das Format wie Stroboskop oder Markus Koivisto dekodieren lassen. Wenn Sie Ihre Frage bearbeitet haben, um die Art und Weise, wie Sie die Daten schreiben .bmp Datei, ich konnte vorschlagen, wie man das in einen Memory-Operation umwandelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top