How to store a byte array as an image file on disk?

前端 未结 3 1108
广开言路
广开言路 2021-02-20 09:08

I have a byte array representation of a Image. How to save it on disk as an image file.

I have already done this

OutputStream out = new FileOutputStream(         


        
相关标签:
3条回答
  • 2021-02-20 09:35

    You could use the FileOutputStream class:

    FileOutputStream fos = new FileOutputStream("image.jpg");
    try {
        fos.write(someByteArray);
    }
    finally {
        fos.close();
    }
    
    0 讨论(0)
  • 2021-02-20 09:45

    You can use ImageIO API.

    The details can be a bit hairy, but first you'll probably want to create a BufferedImage using TYPE_BYTE_INDEXED type and some suitable IndexColorModel instance. Then put your byte array there. Hint: you can get the internal representation of BufferedImage with:

    myDataBuffer = myBufferedImage.getRaster().getDataBuffer();
    

    Which will likely return a data buffer of type DataBufferByte (check!), from which you get a byte array with

    myByteArray = ((DataBufferByte) myDataBuffer).getData();
    

    Then you can use System.arraycopy to copy your byte array onto that.

    0 讨论(0)
  • 2021-02-20 09:49

    Other than failing to use a try/finally block (at least in the code you've shown) that should be fine. (You don't need to flush an output stream if you're closing it, by the way.)

    As it's not working, that suggests byteArray doesn't actually contain a JPEG-encoded image. How have you created byteArray to start with? If it's a "raw" representation, you'll probably want to encode it, e.g. using the javax.imageio package.

    0 讨论(0)
提交回复
热议问题