Eai galera…estou com um problema! Eu estou usando um framework para captura de imagem via scanner (MORENA). Na hora de salvar estou usando a classe JFileChooser. Mas eu quero que a imagem seja salva diretamente em uma pasta com nome e tipo (JPG, PNG, TIFF…) previamente setados.
private class SaveImageAction implements Runnable
{ private class Filter extends FileFilter
{ String type;
Filter(String type)
{ this.type=type.toUpperCase();
}
public boolean accept(File file)
{ String name=file.getName().toUpperCase();
return name.endsWith(type);
}
public String getDescription()
{ return type+" Files";
}
}
public synchronized void run()
{ try
{
Image image=selected.getImage();
BufferedImage bufferedImage=new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
bufferedImage.createGraphics().drawImage(image, 0, 0, null);
JFileChooser chooser=new JFileChooser();
String e[]=ImageCodec.getEncoderNames(bufferedImage, null);
for (int i=0; i<e.length; i++)
chooser.addChoosableFileFilter(new Filter(e[i]));
int result=chooser.showSaveDialog(MorenaStudio.this);
if (result==JFileChooser.APPROVE_OPTION)
{ String ext=chooser.getFileFilter().getDescription();
ext=ext.substring(0, ext.indexOf(' ')).toLowerCase();
File file=chooser.getSelectedFile();
String name=file.getName();
if (!name.endsWith(ext))
file=new File(file.getParentFile(), name+"."+ext);
OutputStream tmp=new FileOutputStream(file);
ImageCodec.createImageEncoder(ext, tmp, null).encode(bufferedImage);
tmp.close();
JOptionPane.showMessageDialog(null, "Arquivo Salvo com Sucesso!!","Arquivo",JOptionPane.INFORMATION_MESSAGE);
}
}
catch (Throwable exception)
{ JOptionPane.showMessageDialog(MorenaStudio.this, exception.toString(), "Error", JOptionPane.ERROR_MESSAGE);
exception.printStackTrace();
System.err.println("Erro, tente de novo! ..."+ exception);
}
}
}
Do jeito que esta no codigo, ele me abre uma janela onde eu escolho tipo e a pasta onde quero salvar…estou querendo evitar este passo e salvar direto!
Alguem tem alguma idéia ?
:?
VLW >