Jump to content

Welcome to Geeks to Go - Register now for FREE

Need help with your computer or device? Want to learn new tech skills? You're in the right place!
Geeks to Go is a friendly community of tech experts who can solve any problem you have. Just create a free account and post your question. Our volunteers will reply quickly and guide you through the steps. Don't let tech troubles stop you. Join Geeks to Go now and get the support you need!

How it Works Create Account
Photo

Java image uploader


  • Please log in to reply

#1
allgold36

allgold36

    New Member

  • Member
  • Pip
  • 2 posts
Hi, I've been working through some Tutorials in J2SE 5,
using the latest version of NetBeans +updates 5 and SDK, I've been trying to write a simple application to open some jpeg images but when I build and run the project and try to open the image, the GUI remains blank.I understand what the programme does, but how do i get the ImageReader to open my Local file "C:\Images\ and load the Images from that file into the panel.I just can't make it work.Please help....

Thanks for taking the time to review my code:


import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import java.util.List.*;
import javax.imageio.*;
import javax.imageio.stream.*;
import javax.swing.*;

public class UploadImage {
public static void main(String[] args){
JFrame frame = new ImageIOFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
}

/**this frame loads the images*/
class ImageIOFrame extends JFrame
{
public ImageIOFrame()
{
setTitle("UplodedImage");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

JMenu fileMenu = new JMenu("File");
JMenuItem openItem = new JMenuItem("Open");
openItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
openFile();
}
});
fileMenu.add(openItem);
JMenu saveMenu = new JMenu("Save");
fileMenu.add(saveMenu);
Iterator<String> iter = writerFormats.iterator();
while(iter.hasNext())
{
final String formatName = iter.next();
JMenuItem formatItem = new JMenuItem(formatName);
saveMenu.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
saveFile(formatName);
}
});
}
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);

}
});

fileMenu.add(exitItem);

JMenuBar menuBar = new JMenuBar();
menuBar.add(fileMenu);
setJMenuBar(menuBar);
}
/**open file and load the images
*/
public void openFile()
{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
{
public boolean accept(File f)
{
if(f.isDirectory()) return true;
String name = f.getName();
int p = name.lastIndexOf('.');
if(p == -1) return false;
String suffix = name.substring(p+1).toLowerCase();
return readerSuffixes.contains(suffix);
}
public String getDescription()
{
return "image files";

}
});
int r = chooser.showOpenDialog(this);
if(r != JFileChooser.APPROVE_OPTION) return;
File f = chooser.getSelectedFile();
Box box = Box.createVerticalBox();
try
{

Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("JPEG");
ImageReader reader = iter.next();
int count = reader.getNumImages(true);
images = new BufferedImage[count];
for (int i = 0; i < count; i++)
{
images[i] = reader.read(i);
box.add(new JLabel(new ImageIcon(images[i])));

}
}

catch (IOException e)
{
JOptionPane.showMessageDialog(this, e);

}
setContentPane(new JScrollPane(box));
validate();
}
/** save current image in file*/

public void saveFile(final String formatName)
{
if(images == null) return;
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(formatName);
ImageWriter writer = iter.next();
final java.util.List<String> writerSuffixes
= Arrays.asList(writer.getOriginatingProvider().getFileSuffixes());
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));

chooser.setFileFilter(new
javax.swing.filechooser.FileFilter()
{
public boolean accept(File f)
{
if (f.isDirectory()) return true;
String name = f.getName();
int p = name.lastIndexOf('.');
if(p == -1) return false;
String suffix = name.substring(p + 1).toLowerCase();
return writerSuffixes.contains(suffix);

}
public String getDescription()
{
return formatName + "files";
}
});
int r = chooser.showSaveDialog(this);
if (r != JFileChooser.APPROVE_OPTION) return;
File f = chooser.getSelectedFile();
try
{
ImageOutputStream imageOut = ImageIO.createImageOutputStream(f);
writer.setOutput(imageOut);
writer.write(new IIOImage(images[0], null, null));
for (int i =1; i < images.length; i++)
{
IIOImage iioImage = new IIOImage(images[i], null, null);
if(writer.canInsertImage(i))
writer.writeInsert(i, iioImage, null);
}
}
catch (IOException e)
{
JOptionPane.showMessageDialog(this, e);
}
}
/**get a set of all files suffiexs that are recognised by reader*/

public static Set<String> getReaderSuffixes()
{
TreeSet<String> readerSuffixes = new TreeSet<String>();
for(String name : ImageIO.getReaderFormatNames())
{
Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("JPEG");
while(iter.hasNext())
{
ImageReader reader = iter.next();
String[] s = reader.getOriginatingProvider().getFileSuffixes();
readerSuffixes.addAll(Arrays.asList(s));

}
}
return readerSuffixes;

}
/** get set of preffered format name for all image writers*/

public static Set<String> getWriterFormats()

{
TreeSet<String> writerFormats = new TreeSet<String>();
TreeSet<String> formatNames
= new TreeSet<String>(Arrays.asList(ImageIO.getWriterFormatNames()));

while (formatNames.size() > 0)
{
String name = formatNames.iterator().next();
Iterator<ImageWriter> iter = ImageIO.getImageWritersByFormatName(name);
ImageWriter writer = iter.next();
String[] names = writer.getOriginatingProvider().getFormatNames();
writerFormats.add(names[0]);
formatNames.removeAll(Arrays.asList(names));

}
return writerFormats;

}
private BufferedImage[] images;
private static Set<String> readerSuffixes = getReaderSuffixes();
private static Set<String> writerFormats = getWriterFormats();
private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 400;
}
  • 0

Advertisements







Similar Topics

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

As Featured On:

Microsoft Yahoo BBC MSN PC Magazine Washington Post HP