Convert InputStream(Image) to ByteArrayInputStream

后端 未结 3 722
抹茶落季
抹茶落季 2020-12-14 02:02

Not sure about how I am supposed to do this. Any help would be appreciated

相关标签:
3条回答
  • 2020-12-14 02:39

    Or first convert it to a byte array, then to a bytearrayinputstream.

    File f = new File(arg[0]);
    InputStream in = new FileInputStream(f);
    // convert the inpustream to a byte array
    byte[] buf = null;
    try {
        buf = new byte[in.available()];
        while (in.read(buf) != -1) {
        }
    } catch (Exception e) {
        System.out.println("Got exception while is -> bytearr conversion: " + e);
    }
    // now convert it to a bytearrayinputstream
    ByteArrayInputStream bin = new ByteArrayInputStream(buf);
    
    0 讨论(0)
  • 2020-12-14 02:40

    You can use org.apache.commons.io.IOUtils#toByteArray(java.io.InputStream)

    InputStream is = getMyInputStream();
    ByteArrayInputStream bais = new ByteArrayInputStream(IOUtils.toByteArray(is));
    
    0 讨论(0)
  • 2020-12-14 02:43

    Read from input stream and write to a ByteArrayOutputStream, then call its toByteArray() to obtain the byte array.

    Create a ByteArrayInputStream around the byte array to read from it.

    Here's a quick test:

    import java.io.*;
    
    public class Test {
    
    
           public static void main(String[] arg) throws Throwable {
              File f = new File(arg[0]);
              InputStream in = new FileInputStream(f);
    
              byte[] buff = new byte[8000];
    
              int bytesRead = 0;
    
              ByteArrayOutputStream bao = new ByteArrayOutputStream();
    
              while((bytesRead = in.read(buff)) != -1) {
                 bao.write(buff, 0, bytesRead);
              }
    
              byte[] data = bao.toByteArray();
    
              ByteArrayInputStream bin = new ByteArrayInputStream(data);
              System.out.println(bin.available());
           }
    }
    
    0 讨论(0)
提交回复
热议问题