簡體   English   中英

如何在Java中使用raw byte []創建BMP文件

[英]How to create a BMP file from raw byte[] in Java

我有一個C ++應用程序,它與相機通信並獲取原始圖像數據。 然后我在C ++中有一個Byte [],我想用JNI發送給Java。

但是,我需要將原始Byte []轉換為真實的文件格式(.bmp是我的第一選擇)。 如果我使用BITMAPFILEINFO和BITMAPHEADERINFO將它從C ++寫入硬盤驅動器上的文件,我可以很容易地做到這一點,但我不知道如何將整個格式發送到Java。

然后我考慮使用JNI僅發送原始byte []數據,然后將其轉換為.bmp,但我似乎無法在Java中找到任何好的庫。

什么是我最好的選擇? 用C ++轉換圖像然后使用JNI發送它或將RAW數據發送到Java然后將其轉換為.bmp? 我最容易實現這一目標?

它只是Java 1.5中的兩行:

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

據我所知,Java(在Windows上)知道如何導出jpg,png和bmp。

沒有必要做任何這些。 將字節數組轉換為InputStream並將其提供給ImageIO.read();

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

這將從您的字節數組創建一個Image對象,這在gui組件內顯示非常微不足道。 如果您想保存它,您也可以使用ImageIO類。

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

如果您知道如何將.bmp寫入文件,那么您可以使用(幾乎)相同的代碼來寫入內存緩沖區。 你可以將這個內存緩沖區運送到Java,並讓它解碼像Stroboskop或Markus Koivisto這樣的格式。 如果您編輯了問題以包括將數據寫入.bmp文件的方式,我可以建議如何將其轉換為內存中操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM