alguem sabe qual´o componente q se usa para carregar e como salvar uma imagem…tipo meu sistema tem um cadastro de funcionário e nesse cadastro tenho de gravar a foto do funcionario…mas naum tenho nem idéia de como carrega e salva essa imagem…
Primeiro seu sistema é web?
Se sim procure por algum componente de upload
Se não use o JFileChooser
Segundo você que salvar isso onde?
No banco, em um diretório remoto?
A
alexsandersi
é um sistema desktop…e eu quero salvar na memoria…
renzonuccitelli
Há um tempo eu precise mostrar a foto, em escala adequada e salvar. Procurei e adaptei o seguinte código:
publicclassPainelFotograficoextendsJPanel{privateFilefoto=null;privateByteArrayOutputStreamfotoComTamanhoIdeal=null;privateJLabellabelFoto;privateJInternalFrameframe;privatefinalintALTURA_MAX=480;privatefinalintLARGURA_MAX=600;privateJFileChooserfileC=null;protectedFilegetFoto(){returnfoto;}protectedJInternalFramegetFrame(){returnthis.frame;}protectedPainelFotografico(JInternalFrameframe){super();this.frame=frame;configurar();}privatevoidconfigurar(){ActionProcurarFotoactionProcurarFoto=newActionProcurarFoto(this){publicvoidexecute(){if(fileC==null){fileC=newJFileChooser();fileC.setMultiSelectionEnabled(false);fileC.setDialogTitle("Foto do produto");fileC.setFileFilter(newFileNameExtensionFilter("JPG","jpg"));fileC.setFileSelectionMode(JFileChooser.FILES_ONLY);}fileC.showOpenDialog(null);if(fileC.getSelectedFile().isFile()){this.getPainelFotografico().setImagem(fileC.getSelectedFile().getAbsolutePath());}this.exibirPosicaoOtima();}};JActButtonbotaoProcurarFoto=newJActButton("Inserir Foto",actionProcurarFoto);this.add(botaoProcurarFoto);this.labelFoto=newJLabel("Sem foto para mostrar");this.add(this.labelFoto);}protectedvoidsetImagem(Stringpath){if(path!=null){ImageIconimg=newImageIcon(createThumbnail(newImageIcon(path)).toByteArray());this.foto=newFile(path);setImagem(img);}else{this.labelFoto.setIcon(null);this.labelFoto.setText("Sem foto para mostrar");}}privatevoidsetImagem(ImageIconimg){this.labelFoto.setText(null);this.labelFoto.setIcon(img);this.labelFoto.setSize(img.getIconWidth(),img.getIconHeight());this.labelFoto.setVisible(true);this.frame.setSize(getMaior(this.labelFoto.getWidth(),(int)this.frame.getPreferredSize().getWidth()),(int)(this.frame.getPreferredSize().getHeight()+this.labelFoto.getHeight()));}privateintgetMaior(intaltura1,intaltura2){if(altura1>altura2)returnaltura1;returnaltura2;}privatedoublegetScale(intwidth,intheight){doublescale=(double)LARGURA_MAX/(double)width;if(scale>(double)ALTURA_MAX/(double)height)scale=(double)ALTURA_MAX/(double)height;if(scale>=1)return1;returnscale;}privateByteArrayOutputStreamcreateThumbnail(ImageIconicone){ByteArrayOutputStreambtImage=newByteArrayOutputStream();try{// Get the image from a file. ImageinImage=icone.getImage();// Determine the scale. doublescale=getScale(icone.getIconWidth(),icone.getIconHeight());intscaledW=(int)(scale*(double)icone.getIconWidth());intscaledH=(int)(scale*(double)icone.getIconHeight());// 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 image JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(btImage);encoder.encode(outImage);btImage.close();this.fotoComTamanhoIdeal=btImage;}catch(IOExceptione){e.printStackTrace();}returnbtImage;}protectedByteArrayOutputStreamgetFotoComTamanhoIdeal(){returnfotoComTamanhoIdeal;}}
Pra gravar, basta usar o getFotoComTamanhoIdeal e salvar o array de bytes onde vc kiser...
renzonuccitelli
Ah, essa classe ta precisando de uma refatorada, faz muito tempo que eu fiz e foi só pra diversão. Além disso, eu estava usando o SwingBean, entao troque o JActButton por um botao normao e na acao do botao coloque um ActionListener…