Reading an image from input stream

Hello all,
I'm familiar with setting up an input stream but I have never actually done it. I'm making a connection to a URL (a JPG image). I would like to read the JPG from the URL using an input stream. With the URL class I was able to open a stream, however, I'm not exactly sure how to read from it.
I'm aware of the read() method and read(byte[]) methods of inputstream. But how do I actually implement it?
If I use read(), then bytes come in individually... do I need to combine them at one point? If I read the bytes into an array, how do I determine what size to set the array and how do I convert the byte array into an Image or ImageIcon?
Please advise.
R. Alcazar

Hi,
See http://java.sun.com/products/jdk/1.2/docs/guide/2d/api-jpeg/
and especially JPEGCodec.createJPEGDecoder(java.io.InputStream).
Anyway, you might not want to do it with InputStream. Instead you could try something like this:
URLConnection con = // get it somehow
Image i = (Image) con.getContent(new Class[] {Image.class});
However, If you still want to use the InputStream, here you go with some pseudo code:
InputStream in = // get the input stream with JPEG data...
JPEGImageDecoder dec = JPEGCodec.createJPEGDecoder(in);
Image i = dec.decodeAsBufferedImage();
You can get the InputStream from the URLConnection with getInputStream(). However, I don't remember if the InputStream contained also the HTTP (or what ever protocol the URL specifies) headers. If it contains the headers, then you must rip them of before giving the InputStream to the JPEGCodec...
If this is the case, try calling the URLConnection.getHeaderFields() method before getInputStream. This might not work though.

Similar Messages

  • Problem reading image from input Stream

    I'm having a problem reading an image through an input stream. It gives me the error
    Premature end of JPEG file
    sun.awt.image.ImageFormatException: JPEG datastream contains no imageand my code looks like
    public Image getImage(String name, String command){
              if(command.equals(pCode)){
                   Image image=null;
                   System.out.println(name);
                   InputStream is = getClass().getResourceAsStream(name);
                   BufferedInputStream bis = new BufferedInputStream(is);
                    byte[] byBuf =new byte[10000];
                     try {
                        int byteRead = bis.read(byBuf,0,10000);
                   } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                     image = Toolkit.getDefaultToolkit().createImage(byBuf);
                   return image;
              return null;
         }And the string name looks when printed is: usr/images/PRLogo.jpg

    If the image is bigger than 10K, this code will break.
    You can pass an InputStream to javax.imageio.ImageIO.read. That's probably an easier option than trying to do the buffering yourself.

  • Getting image from input stream

    Hi,
    I'm using the following code in a midlet to get an image from a inputstream from a servlet.
    is = hc.openDataInputStream();
    ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
    int d;
    while ((d = is.read()) != -1)
    bStrm.write(d);
    byte imageData[] = bStrm.toByteArray();
    im = Image.createImage(imageData, 0, imageData.length);
    ImageItem ii = new ImageItem(null, im, ImageItem.LAYOUT_DEFAULT, null);
    if (viewMap.size() != 0)
    viewMap.set(0, ii);
    else
    viewMap.append(ii);
    a problem occurs at
    im = Image.createImage(imageData, 0, imageData.length);
    and a 'exception java/lang/IllegalArgumentException'
    is generated. The inputstream is definitely not null.
    Can anyone see what I am doing wrong or recommend any alternative approaches?
    Thanks

    hi ,
    wouldn't "getResourceAsStream()" work here?
    ====
    kiran

  • Reading data from input stream on unix

    I have a program that reads data from input stream from the socket. If the data is over 1500 bytes it is sent in multiple TCP packets. Whats weird is, if I run the program in windows environment it waits till it receives all the packets but when I run the same program in unix environment it only reads the first packet and go further without waiting for all the TCP packets!!
    The line that reads from input stream is
    datalen = inStr.read(byteBuffer);is there anyway I can make it wait till it receives all the packets on unix system? I do not understand why it works fine for windows in this case but not for unix.
    I'll appreciate any help..
    Thanks

    Try using a DataInputStream with the readfully() method.

  • How can i  read a image from a oracle DB?

    How can i read a image from a oracle DB?
    Because in the DB a have a field that is a picture that i would like to show in a jpanel.....but this field is in oracle DB only has strange caracters ..... so Do i have to read this field like a input stream?....
    Could some body help me please?
    Thanks...
    Mary

    Well I suppose the picture is stored in a blob. If that is so this is some code I have used to load a picture to a panel. Hope you find it usefull.
    PreparedStatement retreive = db.createPreparedStatement("select bl from test where ln = ?");
    Blob bl;
    try{
    retreive.setBigDecimal(1, new BigDecimal(jTFln.getText()));
    ResultSet rs = retreive.executeQuery();
    if (!rs.next())
    System.out.println("Empty Result Set");
    bl = rs.getBlob("bl");
    if (bl == null) {
    System.out.println("Null Blob");
    return;
    InputStream is = bl.getBinaryStream();
    int imageLength = (int) bl.length();
    System.out.println(imageLength);
    System.out.println(bl.length());
    byte[] imageData = new byte [imageLength];
    is.read(imageData, 0, imageLength);
    image1 = new ImageIcon(imageData);
    photo = new JPanel() {
    public void paint(Graphics g){
    g.setColor(Color.lightGray);
    g.drawImage(image1.getImage(), 0, 0, this);
    } catch (BadLocationException ble){
    ble.printStackTrace();
    } catch (SQLException sqle){
    sqle.printStackTrace();
    } catch (IOException ioe){
    ioe.printStackTrace();
    }

  • How to read some images from file system with webdynpro for abap?

    Hi,experts,
    I want to finish webdynpro for abap program to read some photos from file system. I may make MIMES in the webdynpro component and create photos in the MIMES, but my boss doesn't agree with me using this way. He wish me read these photos from file system.
    How to read some images from file system with webdynpro for abap?
    Thanks a lot!

    Hello Tao,
    The parameter
       icm/HTTP/file_access_<xx>
    may help you to access the pictures without any db-access.
    The following two links may help you to understand the other possibilities as well.
    The threads are covering BSP, but it should be useful for WebDynpro as well.
    /people/mark.finnern/blog/2003/09/23/bsp-programming-handling-of-non-html-documents
    http://help.sap.com/saphelp_sm40/helpdata/de/c4/87153a1a5b4c2de10000000a114084/content.htm
    Best regards
    Christian

  • Can BI Publisher read the images from the Database?

    Hi All,
    Can BI Publisher read the images from the Database?
    if yes how it can be achieved?
    Thanks
    Aravind

    Hi,
    There is an example in oracle db. Use the schema PM (Print Media).
    Select the corresponding table that contains the column AD_PHOTO.
    In your RTF template simply to print the image stored in the db use:
    <fo:instream-foreign-object content-type="image/jpg"> <xsl:value-of select="AD_PHOTO"/>
    </fo:instream-foreign-object>
    RUn the RTF template and it should show you all.
    Cheers
    Jorge
    p.s. If this answers your question then please grant the points and close the thread

  • How to read an image from an file using jsp

    reading an image from an file present on local disk using jsp

    Server-local or client-local? First, File I/O, second: better get a new job.

  • How to read bytes(image) from a server ?how to display image after read byt

    How to read bytes(image) from a server ?how to display image after reading bytes?
    i have tried coding tis , but i couldnt get the image to be display:
    BufferedInputStream in1=new BufferedInputStream(kkSocket.getInputStream());
    int length1;
    byte [] data=new byte[1048576];
    if((length1=in1.read(data))!=-1){
    System.out.println("???");
    }System.out.println("length "+length1);
    Integer inter=new Integer(length1);
    byte d=inter.byteValue();

    didn't I tell you about using javax.imageio.ImageIO.read(InputStream) in another thread?

  • How can i read a image from clipboard

    Hi all,
     Can you anyone help me to figure out this problem,actually i have an VI that capture screen image(similiar to print screen option in windows) & save it in a file.and now the thing is,its working in code,once if i converted that to EXE it is not reading that image from the clipboard .I have attached that VI along with this thread please check it.
    Attachments:
    Clipboard.vi ‏20 KB

    Hey,
    It seems that the Get Image from Clipboard method is not available for executables.
    The following thread gives a working example with a CIN -> http://forums.ni.com/ni/board/message?board.id=170&message.id=35987&requireLogin=False
    Christian

  • URL stream throws exception when trying to read from input stream

    Hi guys,
    I tried reading from an input stream which returned a 401. Actually, the server side returns 401 whenever the application server cannot fulfill the client's request, however the 401 contains a message which I will like to read.
    I have tried this with mozilla and the return message is properly displayed even at 401. How can I read this message?

    Oracle home is pointing to wrong location.When we made the change to corrent location.Then we rebuilt the jar file started the managed server it is working fine.

  • SocketException during reads - JVM_recv in socket input stream read

    I am getting a SocketException when a Java applet talks to our
    WebLogic 7.0 server. The catch is that it only occurs at one site
    (that has very high T1 utilization, although latency is only ~60 ms)
    Our setup is such that the calls hit an Alteon load balancer, which
    then sends the request out to one of 4 IIS clustered servers, where it
    then is sent to one of 2 WL clustered servers. I figured latency
    would be the cause, but on IIS and on WL, the timeouts are set to
    several hundred seconds, so I am not quite seeing where the connection
    is being reset. To be honest, I really don't know if it is WL that is
    killing the connection, as nothing abnormal shows up in the WL log. I
    have seen similar problems in this group, though, although the stack
    traces never follow the same path mine does. I do have the following
    call stack from the Java plug-in console, though. Any ideas would be
    greatly appreciated.
    java.net.SocketException: Connection reset by peer: JVM_recv in socket
    input stream read
         at java.net.SocketInputStream.socketRead0(Native Method)
         at java.net.SocketInputStream.read(Unknown Source)
         at java.io.BufferedInputStream.fill(Unknown Source)
         at java.io.BufferedInputStream.read1(Unknown Source)
         at java.io.BufferedInputStream.read(Unknown Source)
         at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
         at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
         at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
    Source)
         at sun.plugin.net.protocol.http.HttpURLConnection.getInputStream(Unknown
    Source)
         at sun.net.www.protocol.http.HttpURLConnection.getHeaderFields(Unknown
    Source)
         at sun.plugin.net.protocol.http.HttpURLConnection.checkCookieHeader(Unknown
    Source)
         at sun.plugin.net.protocol.http.HttpURLConnection.getInputStream(Unknown
    Source)
         at org.xxxx.abstracts.Controller.sendRequest(Controller.java:39)
         at org.xxxx.data.DataMediator.getDataNode(DataMediator.java:46)
         at sun.applet.AppletPanel.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    Also, here is my code, although I can't see anything on the client
    side that seems off:
    public Object sendRequest( Object request, URL receiver ) throws
    Exception{
    Object response = null;
    URLConnection con = null;
    ObjectOutputStream out = null;
    ObjectInputStream in = null;
    try {
    con = receiver.openConnection();
    con.setDoInput(true);
    con.setDoOutput(true);
    con.setUseCaches(false);
    con.setDefaultUseCaches(false);
    con.setAllowUserInteraction(false);
    out = new ObjectOutputStream(con.getOutputStream());
    out.writeObject(request);
    out.flush();
    out.close();
    in = new ObjectInputStream(con.getInputStream());
    response = in.readObject();
    in.close();
    } catch (ClassCastException e) {
    if( out != null ){
    out.close();
    if( in != null ){
    in.close();
    } catch (Exception e) {
    if( out != null ){
    out.close();
    if( in != null ){
    in.close();
    throw e;
    return response;

    There is a known bug on earlier 1.3.1 releases with sockets on Windows 2k
    and XP. I don't remember all the details.
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    http://www.tangosol.com/coherence.jsp
    Tangosol Coherence: Clustered Replicated Cache for Weblogic
    "Keith Patrick" <[email protected]> wrote in message
    news:[email protected]...
    I'm getting the exception on the client, which is an XP machine, while
    the server is Win2K. I can't recall which, but either the applet or
    the server runs 1.3x while the other runs 1.4. I discounted that
    factor, though, as the problem only occurs on one site, which on all
    others it works fine.
    "Cameron Purdy" <[email protected]> wrote in message
    news:<[email protected]>...
    Exception is in the applet or on the server?
    Would one of those by any chance be running on W2K with JDK 131_01 orolder?
    >>
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    http://www.tangosol.com/coherence.jsp
    Tangosol Coherence: Clustered Replicated Cache for Weblogic
    "Keith Patrick" <[email protected]> wrote in message
    news:[email protected]...
    I am getting a SocketException when a Java applet talks to our
    WebLogic 7.0 server. The catch is that it only occurs at one site
    (that has very high T1 utilization, although latency is only ~60 ms)
    Our setup is such that the calls hit an Alteon load balancer, which
    then sends the request out to one of 4 IIS clustered servers, where it
    then is sent to one of 2 WL clustered servers. I figured latency
    would be the cause, but on IIS and on WL, the timeouts are set to
    several hundred seconds, so I am not quite seeing where the connection
    is being reset. To be honest, I really don't know if it is WL that is
    killing the connection, as nothing abnormal shows up in the WL log. I
    have seen similar problems in this group, though, although the stack
    traces never follow the same path mine does. I do have the following
    call stack from the Java plug-in console, though. Any ideas would be
    greatly appreciated.
    java.net.SocketException: Connection reset by peer: JVM_recv in socket
    input stream read
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown
    Source)
    at
    sun.plugin.net.protocol.http.HttpURLConnection.getInputStream(Unknown
    Source)
    at sun.net.www.protocol.http.HttpURLConnection.getHeaderFields(Unknown
    Source)
    atsun.plugin.net.protocol.http.HttpURLConnection.checkCookieHeader(Unknown
    Source)
    atsun.plugin.net.protocol.http.HttpURLConnection.getInputStream(Unknown
    Source)
    at org.xxxx.abstracts.Controller.sendRequest(Controller.java:39)
    at org.xxxx.data.DataMediator.getDataNode(DataMediator.java:46)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Also, here is my code, although I can't see anything on the client
    side that seems off:
    public Object sendRequest( Object request, URL receiver ) throws
    Exception{
    Object response = null;
    URLConnection con = null;
    ObjectOutputStream out = null;
    ObjectInputStream in = null;
    try {
    con = receiver.openConnection();
    con.setDoInput(true);
    con.setDoOutput(true);
    con.setUseCaches(false);
    con.setDefaultUseCaches(false);
    con.setAllowUserInteraction(false);
    out = new ObjectOutputStream(con.getOutputStream());
    out.writeObject(request);
    out.flush();
    out.close();
    in = new ObjectInputStream(con.getInputStream());
    response = in.readObject();
    in.close();
    } catch (ClassCastException e) {
    if( out != null ){
    out.close();
    if( in != null ){
    in.close();
    } catch (Exception e) {
    if( out != null ){
    out.close();
    if( in != null ){
    in.close();
    throw e;
    return response;

  • How to read/write image from Microsoft Word

    Hello All,
    I have to replace an image from word(.doc) files.How to read/write images, can any body help me out.
    Thanks in Advance
    Harish Sohane

    harissohane wrote:
    Hi,
    Thanks a lot. if any body knows about it please let me know. waiting for reply.
    Thanks in AdvanceLooking at POI again, it doesn't let you write them, but it does let you read them.
    [A list of API's found in Google in 10 seconds.|http://schmidt.devlib.org/java/libraries-word.html]

  • Read Tif Image from Database Display in Windows Fax Viewer

    Code for reading a BLOB from Oracle which is a TIF image and displaying it in Windows Picture and Fax Viewer. Gives the ability to display with perfect resolution, Zoom In & Out, Rotate and Print.
    I m storing the image on my C drive, you can store where ever you want.
    package com.test.examples;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import oracle.sql.BLOB;
    public class Test {
         * Main method for calling the View Tif Image method.
         * @param args
         public static void main(String[] args) {
              String id = "123";
              Test test = new Test();
              test.viewTifImage(id);
         * Method for viewing TIF Image
         public void viewTifImage(final String id) {
              BLOB blob = null;
              FileOutputStream outStream = null;
              InputStream inStream = null;
              final String filename = "C:\\Images\\image.tif";
              if (Helper.stringNotNullAndEmpty(id)) {
                   try {
                        imageDAO = new ImageDAO();
                        blob = imageDAO.getImageBLOB(id);
                        File blobFile = new File(filename);
                        outStream = new FileOutputStream(blobFile);
                        inStream = blob.getBinaryStream();
                        int length = -1;
                        int size = new Long(blob.length()).intValue();
                        byte[] buffer = new byte[size];
                        while ((length = inStream.read(buffer)) != -1) {
                             outStream.write(buffer, 0, length);
                             outStream.flush();
                        showTiff(filename);
                        inStream.close();
                        outStream.close();
                   } catch (IOException ioe) {
                        System.out.println("Exception in IO block.");
                        ioe.printStackTrace();
                        try {
                             inStream.close();
                             outStream.close();
                        } catch (IOException ioe1) {
                             ioe1.printStackTrace();
                   }catch (DAOException daoe) {
                        System.out.println("Exception while getting the BLOB");
                        daoe.printStackTrace();
                   } catch (Exception ex) {
                        System.out.println("ERROR(djv_exportBlob) Unable to export:"
                                  + filename);
                        ex.printStackTrace();
                   } finally {
                        try {
                             inStream.close();
                             outStream.close();
                        } catch (IOException e) {
                             System.out.println("Exception in IO block.");
                             e.printStackTrace();
         public static boolean showTiff(String fileName) throws IOException {
              String progDir = System.getenv().get("SystemRoot");
              System.out.println("SYSTEM ROOT DIRECTORY" + progDir);
              // turn the backslash around to a forward slash
              int x = progDir.indexOf('\\');
              String front = progDir.substring(0, x);
              String back = progDir.substring(x + 1);
              progDir = front + "/" + back;
              String osCmd = progDir + "/system32/rundll32.exe " + progDir
                        + "/system32/shimgvw.dll,ImageView_Fullscreen " + fileName;
              try {
                   System.out.println("command is " + osCmd);
                   Runtime rt = Runtime.getRuntime();
                   Process ps = rt.exec(osCmd);
              } catch (IOException ie) {
                   System.out.println("error running fax viewer");
                   return false;
              return true;
    Let me know if you find some thing wrong in here.
    Thanks
    raffu

    REad all the file paths from DB in e.g. List<String>. Define javax.swing.Timer.
    How to use timer read here
    http://leepoint.net/notes-java/other/10time/20timer.html
    or
    http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html
    When the timer's actionPerformed happens use next index in the array to get next filePath and show your image. When end of list is achieved just stop the timer (or startd from the beginning of the list again).

  • How to read  jpg image from a specified path

    Hi
    I am having an image in jpg ext, so i am using File nf = new File(path);to read the image, now i have to place that jpg image in an byte/String array so from that i will save that in to the Oracle DB with BLOB data type, plz answer to this asap with code......
    the following code is not useful i think so...
         String st = "C:\Documents and Settings\Sasi\Desktop\sasi.jpg"    
          File infile = new File(st);
         BufferedImage im = ImageIO.read(infile);
         String[] reader_names = ImageIO.getReaderFormatNames();plz reply to this asap,
    regards
    sasi

    Sasi9 wrote:
    String st = "C:\Documents and Settings\Sasi\Desktop\sasi.jpg"    
    File infile = new File(st);
    //BufferedImage im = ImageIO.read(infile);
    //String[] reader_names = ImageIO.getReaderFormatNames();
    byte[] buffer = new byte[infile.length()];Now use a RandomAccessFile to read the file into your byte array. [readFully(buffer);|http://java.sun.com/j2se/1.4.2/docs/api/java/io/RandomAccessFile.html]

Maybe you are looking for