Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Applets and the fly likes getting problem in creating an image from int array Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Applets
Bookmark "getting problem in creating an image from int array" Watch "getting problem in creating an image from int array" New topic
Author

getting problem in creating an image from int array

Aayush Patel
Greenhorn

Joined: Apr 26, 2001
Posts: 21
I had created an int array from an image from the following code..
public void createImage(Image serverlateImage)
{int iw=0;
int ih=0;
int i=0;
try{ iw=serverlateImage.getWidth(null);
ih=serverlateImage.getHeight(null);
pixels=new int[iw*ih];
PixelGrabber pg=new PixelGrabber(serverlateImage,0,0,iw,ih,pixels,0,iw);
pg.grabPixels();
}catch(InterruptedException ie){}
}
now if i had created perfect int array then i m creating an image from this array...and code is following..
PrintFrame(int []pixels)
{System.out.println("size of array at printframe "+pixels.length);

Dimension d=getSize();
int w=(int)(d.getWidth());
int h=(int)(d.getHeight());
int al = 0,
rd = 0,
gr = 0,
bl = 0,
avg = 0;
int grayMap[] = new int[w*h];
// im=createImage(pixels,w,h);
// if(im!=null)
{for (int i = 0; i < h; i++)
{
for (int j = 0; j < w; j++)
{
al = (pixels [(i*w)+j] & 0xff000000)>>24;
rd = (pixels [(i*w)+j] & 0x00ff0000)>>16;
gr = (pixels [(i*w)+j] & 0x0000ff00)>>8;
bl = (pixels [(i*w)+j] & 0x000000ff);
avg = (rd+gr+bl)/3;
grayMap [(i*w)+j] = ((al <<24) |(avg <<16)|(avg<<8)|avg);
}
}
im=createImage (grayMap,w,h) ;
}
public static Image createImage(int [] pixels, int width, int height)
{
MemoryImageSource imageSource = new MemoryImageSource(width,height,pixels,0,width);
return Toolkit.getDefaultToolkit().createImage(imageSource);
}
now can somebody tell me whats the problem with this code...y i am not able to get image....thnx in advance
Tanveer Rameez
Ranch Hand

Joined: Dec 11, 2000
Posts: 158
hi
I understand that you are trying to do a simple image processing functionality-grayscaling of RGB images.
Here is a similar code:

In your code, you should have included the Mediatracker while loading the image.Remember image loading takes some time.So you must ensure that the execution of the program waits until the image is fully loaded. m.waitForID9..) ensures this. Otherwise you get NullPointerException for the image.
Secondly in your method printFrame(int[] pixels) you took the width and height of the image to be created from:
Dimension d=getSize();
but assuming that you are writing the code inside a class extending FRame/Applet/Panel etc, getSize() will give the size of that component and this size has nothing to do with the image.What you need is the size of the original image from which you obtained the pixels. So in the imageToIntArray(...) method put the width and height of the image into member variables, so that you can get these values in the convert(..) method.
hope this helps.
For more image manipulation algorithms,codes and concepts like image processing theory,image filters, brightness/contrast, histograms, noise reduction etc you can visit my website: http://tanveer.freeservers.com and go to the projects page.Or directly you can access: http://tanveer.freeservers.com/projects/image_processing_cover.htm
hope this helps
regards
Tanveer


Author of JPhotoBrush Pro (www.jphotobrushpro.com)
Tanveer Rameez
Ranch Hand

Joined: Dec 11, 2000
Posts: 158
hi
I my reply above, I wrote 'image' variable as 'im' in the code:

Please correct it to:

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: getting problem in creating an image from int array
 
Similar Threads
How to display/draw part of a gif file.
Grabbing pixels
Creating an Image by Plotting Pixels?
Seperating an Image.
single dimension array to multi dimension