Sto sviluppando un programma java per acquisire immagini dei dipendenti al momento della registrazione utilizzando una webcam. Posso ottenere l'immagine senza problemi e salvarla nella mia C: drive ma al momento del recupero dell'immagine solo una parte dell'immagine viene visualizzata sull'etichetta. C'è un modo per ridimensionare il JPEG prima di salvarlo? o prima di visualizzarlo? come ridurlo senza una perdita di qualità ....Ridimensionamento e visualizzazione delle immagini in JPanel o JLabel senza perdita di qualità
Thankz molto Cheerz! :)!
ok ragazzi ... ecco qui: - Ho commentato il codice nel modo in cui li ho usati.
//This method will capture the image from the interface and save it under the unique employee ID
public String captureImage(int picId){
FrameGrabbingControl ControlFG = (FrameGrabbingControl)
broadcast.getControl("javax.media.control.FrameGrabbingControl");
Buffer buffer = ControlFG.grabFrame();
BufferToImage image = new BufferToImage((VideoFormat)buffer.getFormat());
img = image.createImage(buffer);
path="c:\\employee"+picId+".jpg";
saveJPG(img,path);//method will save the image
return path;
}
public void saveJPG(Image img, String s){***//method will save the image***
System.out.println(s);
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null),
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();
g2.drawImage(img,null,null);
FileOutputStream out = null;
try{
out = new FileOutputStream(s);
}
catch (java.io.FileNotFoundException io){
System.out.println("File Not Found");
}
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
param.setQuality(0.5f,false);
encoder.setJPEGEncodeParam(param);
try
{
encoder.encode(bi);
out.close();
}
catch (java.io.IOException io)
{
System.out.println("IOException");
}
}
forse posso scalare l'immagine, mentre il risparmio .. in modo che possa recuperare l'immagine in scala ..
* "contrazione senza una perdita di qualità" * Questo non è possibile. Varie tecniche di smoothing possono in parte nascondere gli artefatti del ridimensionamento dell'immagine, ma ridurre la risoluzione in WxH e la 'qualità' dell'immagine deve essere inferiore. –
@AndrewThompson sì è vero .... un calo di qualità va bene, ma l'intera immagine non viene visualizzata ... finora solo una parte dell'immagine ridotta era tutto quello che potevo ottenere .. –
Per un aiuto migliore prima, post un [SSCCE] (http://sscce.org/). Forse hot-link a una di queste [immagini] (http://pscode.org/media/#image). –