How to grab byte[] of an Image in java?

后端 未结 3 1495
面向向阳花
面向向阳花 2021-01-23 22:40

I have a url of an Image. Now I want to get the byte[] of that image. How can I get that image in byte form.

Actually the image is a captcha image. I am using decaptcher

3条回答
  •  独厮守ぢ
    2021-01-23 23:16

    EDIT

    From this SO question I've got how to read an input stream into a byte array.

    Here's the revised program.

    import java.io.*;
    import java.net.*;
    
    public class ReadBytes {
        public static void main( String [] args ) throws IOException {
    
            URL url = new URL("http://sstatic.net/so/img/logo.png");
    
                // Read the image ...
            InputStream inputStream      = url.openStream();
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            byte [] buffer               = new byte[ 1024 ];
    
            int n = 0;
            while (-1 != (n = inputStream.read(buffer))) {
               output.write(buffer, 0, n);
            }
            inputStream.close();
    
            // Here's the content of the image...
            byte [] data = output.toByteArray();
    
        // Write it to a file just to compare...
        OutputStream out = new FileOutputStream("data.png");
        out.write( data );
        out.close();
    
        // Print it to stdout 
            for( byte b : data ) {
                System.out.printf("0x%x ", b);
            }
        }
    }
    

    This may work for very small images. For larger ones, ask/search about "read input stream into byte array"

    Now the code I posted works for larger images too.

提交回复
热议问题