Ich entwickle ein Java-Programm, um Mitarbeiterbilder zum Zeitpunkt der Registrierung mit einer Webcam zu erfassen. Ich kann das Bild ohne Probleme erhalten und es in meinem C: Laufwerk speichern, aber beim Abrufen des Bildes wird nur ein Teil des Bildes auf dem Etikett angezeigt. Gibt es eine Möglichkeit, die JPEG-Größe zu ändern, bevor Sie sie speichern? oder bevor es angezeigt wird? wie schrumpfen es ohne einen Qualitätsverlust ....Bildgrößenanpassung und Anzeige in einem JPanel oder einem JLabel ohne Qualitätsverlust
Vielen Dank Cheerz! :)!
okay Jungs ... hier geht: - Ich habe den Code in der Art, wie ich sie benutzt habe kommentiert.
//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");
}
}
vielleicht kann ich das Bild skalieren, während .. Speichern, so dass ich das skalierte Bild abrufen kann ..
* "es ohne Qualitätsverlust schrumpfen" * Das ist nicht möglich. Verschiedene Glättungstechniken können teilweise die Artefakte der Bildgrößenänderung verbergen, aber die Auflösung in WxH verringern und die Bildqualität muss geringer sein. –
@AndrewThompson yeah das ist wahr .... ein Rückgang der Qualität ist in Ordnung, aber das gesamte Bild wird nicht angezeigt ... bis jetzt nur ein Teil des geschrumpften Bild war alles, was ich erhalten konnte .. –
Für bessere Hilfe früher, nach an [SSCCE] (http://sscce.org/). Vielleicht Hot-Link zu einem dieser [Bilder] (http://pscode.org/media/#image). –