Hi,
ich probiere ein Bild zu verkleinern um es dann in einer jtable anzuzeigen. das funktioniert auch gut, zumindest mit kleinen bildern.
Unten ein beispiel:
bei einem kleinen bild dauert es weniger als eine sekunde, bei einen 10 mal so grossen bild(auf die pixel bezogen), über 1 1 1/2 minuten. gibt es eine bessere/schnellere möglichkeit ein bild zu verkleinern?
Beispiel 1:
-------------
10 kb grosses Bild 160x120
Konsolenausgabe:
Start
breite = 81
hoehe = 60
Tue Feb 13 12:05:20 CET 2007
Tue Feb 13 12:05:20 CET 2007
Fertig
Beispiel 2:
------------
402 kb grosses Bild 1600x1200
Konsolenausgabe:
Start
breite = 80
hoehe = 60
Tue Feb 13 12:07:40 CET 2007
Tue Feb 13 12:09:18 CET 2007
Fertig
ich probiere ein Bild zu verkleinern um es dann in einer jtable anzuzeigen. das funktioniert auch gut, zumindest mit kleinen bildern.
Unten ein beispiel:
bei einem kleinen bild dauert es weniger als eine sekunde, bei einen 10 mal so grossen bild(auf die pixel bezogen), über 1 1 1/2 minuten. gibt es eine bessere/schnellere möglichkeit ein bild zu verkleinern?
Beispiel 1:
-------------
10 kb grosses Bild 160x120
Konsolenausgabe:
Start
breite = 81
hoehe = 60
Tue Feb 13 12:05:20 CET 2007
Tue Feb 13 12:05:20 CET 2007
Fertig
Beispiel 2:
------------
402 kb grosses Bild 1600x1200
Konsolenausgabe:
Start
breite = 80
hoehe = 60
Tue Feb 13 12:07:40 CET 2007
Tue Feb 13 12:09:18 CET 2007
Fertig
Code:
public void convertToSmallBufferedImage(String pathGross, String pathKlein){
try{
System.out.println("Start");
File temp = new File(pathGross);
final BufferedImage in = ImageIO.read(temp);
int breite = in.getWidth();
int hoehe = in.getHeight();
while(hoehe > 120){
hoehe = hoehe * 50 / 100;
breite = breite * 50 / 100;
}
while(hoehe > 60){
hoehe = hoehe * 80 / 100;
breite = breite * 80 / 100;
}
System.out.println("breite = " +breite );
System.out.println("hoehe = " +hoehe );
Image scaled = in.getScaledInstance(breite, hoehe, Image.SCALE_SMOOTH);
BufferedImage out = new BufferedImage(breite, hoehe, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = out.createGraphics();
System.out.println(new Date());
g2d.drawImage(scaled, 0, 0, null);
System.out.println(new Date());
g2d.dispose();
File file = new File(pathKlein);
if(pathGross.toLowerCase().endsWith(".gif")){
ImageIO.write(out, "gif", file);
}
else if( (pathGross.toLowerCase().endsWith(".jpg")) || (pathGross.toLowerCase().endsWith(".jepg")) ){
ImageIO.write(out, "jpeg", file);
}
}
catch (Exception ex) {
System.out.println(ex);
}
System.out.println("Fertig");
}