Reading and displaying TIFF image

HiDoes anyone know how to read and display TIFF image?My program gets TIFF image as byte array from ther server. How can I reconstruct the TIFF image and display it on the client side? Any input will be appreciated.Thanks in advancemichiko
[288 byte] By [michiko72] at [2007-9-26 2:44:09]
# 1
The easiest way is to read it using JAI which will decode TIFF for you: like JAI.create("stream", stream) where stream is a ByteArrayInputStream constructed from your Byte Array. You can then call getBufferedImage since I assume that's what you want.
tsubramaniam at 2007-6-29 10:23:59 > top of Java-index,Security,Cryptography...
# 2

this will help you..

further info manojp@dsmsoft.com

import javax.media.jai.ImageLayout;

import java.awt.image.IndexColorModel;

import java.awt.image.SampleModel;

import java.awt.image.RenderedImage;

import java.awt.image.BufferedImage;

import java.awt.image.*;

import javax.media.jai.JAI;

import javax.media.jai.LookupTableJAI;

import javax.media.jai.PlanarImage;

import javax.media.jai.NullOpImage;

import javax.media.jai.OpImage;

import com.sun.media.jai.codec.ImageCodec;

import com.sun.media.jai.codec.ImageDecoder;

import com.sun.media.jai.codec.FileSeekableStream;

import com.sun.media.jai.codec.SeekableStream;

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.awt.image.renderable.ParameterBlock;

import java.util.Vector;

import javax.media.jai.*;

import javax.swing.*;

import javax.swing.event.*;

import com.sun.media.jai.codec.BMPEncodeParam;

import com.sun.media.jai.codec.TIFFEncodeParam;

import com.sun.media.jai.codec.*;

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import java.applet.Applet;

import java.applet.AppletContext;

import java.awt.Graphics.*;

import java.awt.Graphics2D;

import java.io.*;

import java.io.File;

import java.io.InputStream;

import java.io.IOException;

import java.awt.MediaTracker;

import javax.media.jai.widget.ScrollingImagePanel;

public class zoodemo extends Applet implements Runnable

{

BufferedImage mine;

ImageLayout layout;

PlanarImage image = null;

ScrollingImagePanel panel;

Panel p1;

String filename;

RenderedImage op;

SeekableStream s;

File file;

int width, height;

MediaTracker tracker;

BufferedImage bi;

Image img;

String msg;

ImageLayoutLay;

SeekableStream stream;

String[] names;

ImageDecoder dec;

RenderedImage im;

IndexColorModel icm;

int mapSize;

byte[][] lutData;

int zoom1;

LookupTableJAI lut;

// for zoom

Thread runner;

Image pic;

Image theCanvas;

int zoom;

int Height;

int Width;

int xpos;

int ypos;

int level;

int speed;

int xMove;

int yMove;

int cursorX;

int cursorY;

boolean preload;

Object theFrame;

int cursorType;

// for zoom constructor

public zoodemo()

{

/*Default zoom Level where we can view the full page at the start*/

/*Five levels of zoom in -- on every 5th click the view is reset*/

runner = null;

zoom = 1;

xMove = 0;

yMove = 0;

cursorX = -5000;

cursorY = -5000;

//preload = false;

}

//start stop run for zoom

public void start()

{

if(runner == null)

{

runner = new Thread(this);

runner.start();

}

}

public void stop()

{

if(runner != null)

runner.stop();

runner = null;

}

public void run()

{

do

{

repaint();

try

{

Thread.sleep(10L);/*Speed of the scrolling is controlled lesser the number faster we scroll*/

}

catch(InterruptedException interruptedexception) { }

}

while(true);

}

public void init()

{

// Use the JAI API unless JAI_IMAGE_READER_USE_CODECS is set

//

String picture = getParameter("IMAGE");

System.out.println("name "+ picture);

if(picture == null)

{

System.out.println("Image File not definded");

System.exit(1);

}

String tempS; // Here get the zoom level

if((tempS = getParameter("ZoomLevel")) != null)

{

level = Integer.parseInt(tempS);

if(level < 1)

level = 5;

}

if((tempS = getParameter("PanSpeed")) != null)

{

speed = Integer.parseInt(tempS);

if(speed < 1 || speed > 10)

speed = 6;

}

//try

//{

/*stream = new FileSeekableStream( picture);

names= ImageCodec.getDecoderNames(stream);

dec= ImageCodec.createImageDecoder(names[0], stream, null);

RenderedImage im= dec.decodeAsRenderedImage();*/

System.out.println("inside try");

im = JAI.create("fileload", picture);

System.out.println("after im");

image = PlanarImage.wrapRenderedImage(im);

width = image.getWidth();

height = image.getHeight();

if(image.getColorModel() instanceof IndexColorModel)

{

System.out.println("inside");

//Retrieve the IndexColorModel

IndexColorModel icm = (IndexColorModel)image.getColorModel();

System.out.println("after color model");

//Cache the number of elements in each band of the colormap.

int mapSize = icm.getMapSize();

//Allocate an array for the lookup table data.

byte[][] lutData = new byte[3][mapSize];

// Load the lookup table data from the IndexColorModel.

icm.getReds(lutData[0]);

icm.getGreens(lutData[1]);

icm.getBlues(lutData[2]);

//Create the lookup table object.

LookupTableJAI lut = new LookupTableJAI(lutData);

//Replace the original image with the 3-band RGB image.

int zoom = 2;

image = JAI.create("lookup", image, lut);

System.out.println("if loop ends now");

}

System.out.println("before graphics");

//}

/*catch (IOException e)

{

e.printStackTrace();

System.out.println("inside start method-IO Exception");

//return null;

}

catch(Exception e)

{

e.printStackTrace();

System.out.println("inside start method-Exception");

}*/

if((tempS = getParameter("preload")) != null)

preload = tempS.equals("ON");

else

preload = true;

if((tempS = getParameter("cursor")) != null)

cursorType = Integer.parseInt(getParameter("cursor"));

if(tempS == null || cursorType != 2)

{

Object theFrame = null;

for(theFrame = getParent(); !(theFrame instanceof Frame) && theFrame != null; theFrame = ((Component)theFrame).getParent());

if(theFrame != null)

((Frame)theFrame).setCursor(12);

}

mine =image.getAsBufferedImage();

MediaTracker MTracker = new MediaTracker(this);

MTracker.addImage(mine, 1);

try

{

MTracker.waitForID(1);

}

catch(InterruptedException IE)

{

System.out.println("Cannot load Image");

}

Width = size().width;

Height = size().height;

theCanvas = createImage(Width, Height);

if(preload)

{

for(int z = 2; z <= level; z++)

theCanvas.getGraphics().drawImage(mine, xpos, ypos, Width * z, Height * z, this);

}

xpos = 0;

ypos = 0;

repaint();

}

//over

public void setXPos()

{

xpos = xpos + xMove;

if(xpos > 0)

xpos = 0;

else

if(xpos < -(Width * (zoom - 1)))

xpos = -Width * (zoom - 1);

}

public void setYPos()

{

ypos = ypos + yMove;

if(ypos > 0)

ypos = 0;

else

if(ypos < -(Height * (zoom - 1)))

ypos = -Height * (zoom - 1);

}

public boolean handleEvent(Event evt)

{

switch(evt.id)

{

case 502: // Event.MOUSE_UP

case 504: // Event.MOUSE_EVENT

default:

break;

case 501: // Event.MOUSE_DOWN

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().height - 19)

{

try

{

//getAppletContext().showDocument(new URL("www.dsmsoft.com"), "_blank");

}

// catch(MalformedURLException malformedurlexception) { }

catch(Exception malformedurlexception) { }

break;

}

zoom++;

xpos = xpos - Width / 2;

ypos = ypos - Height / 2;

if(zoom > level)

{

zoom = 1;

xpos = 0;

ypos = 0;

}

break;

case 503: // Event.MOUSE_MOVE

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().height - 19)

{

if(theFrame != null)

((Frame)theFrame).setCursor(12);

}

else

if(theFrame != null)

((Frame)theFrame).setCursor(0);

cursorX = evt.x - 20;

cursorY = evt.y - 20;

if(evt.x > (4 * Width) / 5)

xMove = -Width / ((11 - speed) * 10);

else

if(evt.x < Width / 5)

xMove = Width / ((11 - speed) * 10);

else

xMove = 0;

if(evt.y > (4 * Height) / 5)

{

yMove = -Height / ((11 - speed) * 10);

break;

}

if(evt.y < Height / 5)

yMove = Height / ((11 - speed) * 10);

else

yMove = 0;

break;

case 505: // Event.MOUSE_EXIT

cursorX = -5000;

cursorY = -5000;

xMove = 0;

yMove = 0;

break;

}

return super.handleEvent(evt);

}

//paint section

public void update(Graphics gg)

{

setXPos();

setYPos();

Graphics g = theCanvas.getGraphics();

g.drawImage(mine, xpos, ypos, Width * zoom, Height * zoom, this);

if(cursorType == 2)

{

g.setColor(Color.orange);

g.drawOval(cursorX + 4, cursorY + 4, 20, 20);

g.drawOval(cursorX + 3, cursorY + 3, 22, 22);

g.drawOval(cursorX + 2, cursorY + 2, 24, 24);

g.drawOval(cursorX + 1, cursorY + 1, 26, 26);

g.setFont(new Font("Helvetica", 1, 20));

g.drawString("+", cursorX + 8, cursorY + 21);

}

//g.setColor(Color.blue);

//g.setFont(new Font("TimesRoman", 2, 14));

//g.dispose();

paint(gg);

}

public void paint(Graphics g)

{

g.drawImage(theCanvas, 0, 0, this);

}

}

/*<html>

<applet code="zoodemo.class" width="500" height="500">

<param name="IMAGE" value="guns.tif">

<param name="ZoomLevel" value="5">

<param name="PanSpeed" value="1000">

<param name="Cursor" value="1">

<param name="Preload" value="ON">

</applet>

</html>*/

emersonmanoje at 2007-6-29 10:23:59 > top of Java-index,Security,Cryptography...
# 3

Hi, i compile this command line:

"javac zoodemo.java -deprecation"

And this error ocurr:

zoodemo.java:42: warning: javax.media.jai.widget.ScrollingImagePanel in javax.me

dia.jai.widget has been deprecated

import javax.media.jai.widget.ScrollingImagePanel;

^

zoodemo.java:49: warning: javax.media.jai.widget.ScrollingImagePanel in javax.me

dia.jai.widget has been deprecated

ScrollingImagePanel panel;

^

zoodemo.java:118: warning: stop() in java.lang.Thread has been deprecated

runner.stop();

^

zoodemo.java:234: warning: setCursor(int) in java.awt.Frame has been deprecated

((Frame)theFrame).setCursor(12);

^

zoodemo.java:249: warning: size() in java.awt.Component has been deprecated

Width = size().width;

^

zoodemo.java:250: warning: size() in java.awt.Component has been deprecated

Height = size().height;

^

zoodemo.java:286: warning: handleEvent(java.awt.Event) in java.awt.Component has

been deprecated

public boolean handleEvent(Event evt)

^

zoodemo.java:296: warning: size() in java.awt.Component has been deprecated

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().hei

ght - 19)

^

zoodemo.java:296: warning: size() in java.awt.Component has been deprecated

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().hei

ght - 19)

^

zoodemo.java:296: warning: size() in java.awt.Component has been deprecated

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().hei

ght - 19)

^

zoodemo.java:318: warning: size() in java.awt.Component has been deprecated

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().hei

ght - 19)

^

zoodemo.java:318: warning: size() in java.awt.Component has been deprecated

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().hei

ght - 19)

^

zoodemo.java:318: warning: size() in java.awt.Component has been deprecated

if(evt.x > size().width - 130 && evt.x < size().width - 30 && evt.y > size().hei

ght - 19)

^

zoodemo.java:321: warning: setCursor(int) in java.awt.Frame has been deprecated

((Frame)theFrame).setCursor(12);

^

zoodemo.java:325: warning: setCursor(int) in java.awt.Frame has been deprecated

((Frame)theFrame).setCursor(0);

^

zoodemo.java:354: warning: handleEvent(java.awt.Event) in java.awt.Component has

been deprecated

return super.handleEvent(evt);

^

16 warnings

How the problem ?

Tks

Maninho_Cury at 2007-6-29 10:23:59 > top of Java-index,Security,Cryptography...