Boa noite, amigos!
Tenho uma aplicação web que faz upload de uma imagem e grava-a no banco de dados. Tenho uma classe que faz o redimensionamento da imagem a partir do disco rigido, e grava-a tambem no disco rígido. Eu gostaria de faze-la pegar a imaggem do upload, redimensionar, e devolver a imagem para ser gravado no banco, ao invés de ser gravada no disco. Poderiam me dar uma luz como faço isso, por favor?
Na classe que faz o upload, se a imagem tiver mais que 1mb, ela chamará a classe que redimensiona. senão , ela grava a imagem no banco. vejam:
Classe que faz o upload:
//imports da vida
public class UploadImage implements Serializable {
private UploadedFile file;
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
public void upload() {
long tamanho = file.getSize();
String nome = file.getFileName();
String extensao = nome.substring(nome.lastIndexOf(".") + 1, nome.length());
if ( tamanho < 1048576)
{
try {
InputStream fin2 = file.getInputstream();
PreparedStatement pre = con.prepareStatement("insert into upload_image (image_name,image) values(?,?)");
pre.setString(1, file.getFileName().toString());
pre.setBinaryStream(2, fin2, file.getSize());
pre.executeUpdate();
}
catch (Exception e) {
System.out.println("Exception-File Upload." + e.getMessage());
}
}
else if( tamanho > 1048576)
{
//chama a classe que redimensiona a imagem. Como faço isso???
}
else{
FacesMessage msg = new FacesMessage("Please select image with size until 2Mb and type: JPEG, GIF, PNG or BMP.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
}
Classe Redimensioinadora:
public class RedimensionaImagem {
private static final int IMG_WIDTH = 160;
private static final int IMG_HEIGHT = 200;
UploadImage obj;
public static void main(String [] args){
try{
//Aqui quero que esta classe leia o arquivo do upload , ao invés do arquivo que está no disco
BufferedImage originalImage = ImageIO.read(new File("C:\\Users\\Fred\\Documents\\Resize\\teste.jpg"));
int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
BufferedImage resizeImageHintJpg = resizeImageWithHint(originalImage, type);
//aqui quero que esta classe devolva a imagem para a classe UploadImage, para ela ser gravada no banco
ImageIO.write(resizeImageHintJpg, "jpg", new File("C:\\Users\\Fred\\Documents\\Resize\\aprendendo.jpg"));
}catch(IOException e){
System.out.println(e.getMessage());
}
}
}