View Png 2 : Image « J2ME « Java






View Png 2

View Png 2
/*--------------------------------------------------
* ViewPng2.java
*
* Download and view a png file
*
* Same as pngView.java with the exception that the 
* connection to the server is through an
* InputStream versus ContentConnection
*
* Example from the book:     Core J2ME Technology
* Copyright John W. Muchow   http://www.CoreJ2ME.com
* You may use/modify for any non-commercial purpose
*-------------------------------------------------*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;

public class ViewPng2 extends MIDlet implements CommandListener
{
  private Display display;
  private TextBox tbMain;
  private Form fmViewPng;
  private Command cmExit;
  private Command cmView;
  private Command cmBack;

  public ViewPng2()
  {
    display = Display.getDisplay(this);

    // Create the Main textbox with a maximum of 75 characters
    tbMain = new TextBox("Enter url", "http://www.corej2me.com/midpbook_v1e1/ch14/duke.png", 75, 0);    

    // Create commands and add to textbox
    cmExit = new Command("Exit", Command.EXIT, 1);
    cmView = new Command("View", Command.SCREEN, 2);    
    tbMain.addCommand(cmExit);
    tbMain.addCommand(cmView );    

    // Set up a listener for textbox
    tbMain.setCommandListener(this);

    // ---------------------------------------

    // Create the form that will hold the png image
    fmViewPng = new Form("");

    // Create commands and add to form
    cmBack = new Command("Back", Command.BACK, 1);
    fmViewPng.addCommand(cmBack);

    // Set up a listener for form
    fmViewPng.setCommandListener(this);
  }

  public void startApp()
  {
    display.setCurrent(tbMain);
  }

  public void pauseApp()
  { }

  public void destroyApp(boolean unconditional)
  { }

  /*--------------------------------------------------
  * Process events
  *-------------------------------------------------*/
  public void commandAction(Command c, Displayable s)
  {
    // If the Command button pressed was "Exit"
    if (c == cmExit)
    {
      destroyApp(false);
      notifyDestroyed();
    }
    else if (c == cmView)
    {
      // Delete everything from the form
      if (fmViewPng.size() > 0)
        for (int i = 0; i < fmViewPng.size(); i++)
          fmViewPng.delete(i);

      // Download image and set as the first (only) item on the form
      Image im;

      try
      {
        if ((im = getImage(tbMain.getString())) != null)
        {
          ImageItem ii = new ImageItem(null, im, ImageItem.LAYOUT_DEFAULT, null);
         // If there is already an image, set (replace) it
          if (fmViewPng.size() != 0)
            fmViewPng.set(0, ii);
          else  // Append the image to the empty form
            fmViewPng.append(ii);
        }
        else
          fmViewPng.append("Unsuccessful download.");
  
        // Display the form with the image
        display.setCurrent(fmViewPng);
      }
      catch (Exception e)
      { 
        System.err.println("Msg: " + e.toString());
      }
    } 
    else if (c == cmBack) {
      display.setCurrent(tbMain);
    }
  }

  /*--------------------------------------------------
  * Open connection and download png into a byte array.
  *-------------------------------------------------*/
  private Image getImage(String url) throws IOException
  {
    InputStream iStrm = (InputStream) Connector.openInputStream(url);
    Image im = null;

    try
    {
      ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
        
      int ch;
      while ((ch = iStrm.read()) != -1)
        bStrm.write(ch);

      // Place into image array
      byte imageData[] = bStrm.toByteArray();      
      
      // Create the image from the byte array
      im = Image.createImage(imageData, 0, imageData.length);        
    }
    finally
    {
      // Clean up
      if (iStrm != null)
        iStrm.close();
    }

    return (im == null ? null : im);

  }
}


           
       








Related examples in the same category

1.Image Loader
2.Immutable Image Example
3.Image MIDletImage MIDlet
4.Mutable Image ExampleMutable Image Example
5.Immutable Image 1Immutable Image 1
6.Download and view a png fileDownload and view a png file
7.View Png ThreadView Png Thread
8.Draw mutable image on a canvas
9.Draw immutable image on a canvasDraw immutable image on a canvas
10.MutableImageMutableImage
11.Immutable Image From Byte ArrayImmutable Image From Byte Array
12.ImmutableImage From FileImmutableImage From File