Mam aplikację C++, która komunikuje się z kamerą i pobiera surowe dane obrazu. Następnie mam Byte [] w C++, który chcę wysłać do Javy z JNI.Jak utworzyć plik BMP z surowego bajtu [] w Javie
Muszę jednak przekonwertować surowy bajt [] na prawdziwy format pliku (.bmp był moim pierwszym wyborem). Mogę łatwo to zrobić, jeśli piszę to z C++ do pliku na twardym dysku, używając BITMAPFILEINFO i BITMAPHEADERINFO, ale nie wiem, jak by to było zrobić, przesyłając cały format do Javy.
Potem pomyślałem o wysłaniu tylko surowych danych bajtowych [] za pomocą JNI, a następnie konwersji do .bmp, ale nie mogę znaleźć żadnej dobrej biblioteki do robienia tego w Javie.
Jaki byłby mój najlepszy wybór? Konwertowanie obrazu w C++, a następnie wysyłanie go za pomocą JNI lub wysyłanie danych RAW do Java, a następnie konwertowanie na .bmp? Jak najłatwiej to osiągnąć?
To rozwiązanie nie działa dla mnie. obraz jest zawsze zwracany jako null. Tak więc ImageIO.write zgłasza wyjątek. Tablica bajtów to nieprzetworzone dane obrazu Y. Czy możesz rozwinąć więcej? –
Czy jesteś pewien, że twój bajtaramat jest prawidłowym obrazem? Myślę, że jedynym sposobem uzyskania 'image == null' jest brak zarejestrowanego ImageReadera, który może dekodować twój strumień. Domyślam się, że jest to typ pliku, który nie jest obsługiwany lub jest uszkodzony. – Stroboskop
Jest to dane obrazu YUV o stosunku 4: 0: 0. –