É possível, no momento do upload de um arquivo para o servidor, descobrir as dimensões do arquivo? Se sim, como?
Preciso desenvolver um sistema para upload de fotos, sendo que as mesmas não podem ser maiores do que 600px (largura) ou 450px (altura).
Eu acho que só depois do upload completo.
Em javascript não se pode pegar arquivos do cliente e verificar propriedades dele, então tem que fazer upload da imagem para o servidor, ai fica fácil verificar o tamanho em pixels dela.
A menos que tu use outra linguagem (dot net, flash, silverlight) ai tlz tenha como fazer isso.
B
bruno_cobra
ivo costa:
Eu acho que só depois do upload completo.
Em javascript não se pode pegar arquivos do cliente e verificar propriedades dele, então tem que fazer upload da imagem para o servidor, ai fica fácil verificar o tamanho em pixels dela.
A menos que tu use outra linguagem (dot net, flash, silverlight) ai tlz tenha como fazer isso.
Eu acabei tendo esta dúvida pois antigamente programava em PHP, e em PHP isso é moleza de fazer. A página para a qual o form é submetido pega o arquivo enviado e faz as verificações para só depois disso enviar para o servidor.
Será que em Java não tem como fazer o mesmo??
P
Puka
importjava.awt.Graphics2D;importjava.awt.Image;importjava.awt.geom.AffineTransform;importjava.awt.image.BufferedImage;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjavax.swing.ImageIcon;importcom.sun.image.codec.jpeg.JPEGCodec;importcom.sun.image.codec.jpeg.JPEGImageEncoder;publicclassThumbnail{/** * Reads an image in a file and creates * a thumbnail in another file. * @param orig The name of image file. * @param thumb The name of thumbnail file. * Will be created if necessary. * @param maxDim The width and height of * the thumbnail must * be maxDim pixels or less. */publicbooleanprecisaRedimensionar(byte[]img,inttamanhoMax){booleantamanho=false;ImageinImage=newImageIcon(img).getImage();if((inImage.getWidth(null)>tamanhoMax)||(inImage.getHeight(null)>tamanhoMax)){tamanho=true;}returntamanho;}publicByteArrayOutputStreamcreateThumbnail(byte[]orig,intmaxDim){ByteArrayOutputStreambtImage=newByteArrayOutputStream();try{// Get the image from a file.ImageinImage=newImageIcon(orig).getImage();//posso passar um array de bytes (no construtor ImageIcon)// Determine the scale.doublescale=(double)maxDim/(double)inImage.getHeight(null);if(inImage.getWidth(null)>inImage.getHeight(null)){scale=(double)maxDim/(double)inImage.getWidth(null);}// Determine size of new image.//One of them// should equal maxDim.intscaledW=(int)(scale*inImage.getWidth(null));intscaledH=(int)(scale*inImage.getHeight(null));// Create an image buffer in//which to paint on.BufferedImageoutImage=newBufferedImage(scaledW,scaledH,BufferedImage.TYPE_INT_RGB);// Set the scale.AffineTransformtx=newAffineTransform();// If the image is smaller than//the desired image size,// don't bother scaling.if(scale<1.0d){tx.scale(scale,scale);}// Paint image.Graphics2Dg2d=outImage.createGraphics();g2d.drawImage(inImage,tx,null);g2d.dispose();// JPEG-encode the imageJPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(btImage);encoder.encode(outImage);btImage.close();}catch(IOExceptione){e.printStackTrace();}returnbtImage;}}
sergiotaborda
bruno_cobra:
Boa tarde pessoal.
É possível, no momento do upload de um arquivo para o servidor, descobrir as dimensões do arquivo? Se sim, como?
“No momento do upload” não é claro. Ou vc verifica antes do upload, ou depois.
Antes vc verifica no browser ( via javascript), mas essa verificação - se possivel - embora util e informativa nunca deve ser o unico controle. Portanto vc precisa de fazer isso depois, no servidor, sempre.
O único senão é que para usar o pacote awt em linux é preciso que ele seja instalado com os pacotes gráficos. Verifique com quem mantem o ser servidor ( se ele for em linux)