hi zusamm'n
momentan benutze ich folgenden code, um thumbnails für meine fotoverwaltung zu erstellen:
nun ist die generierung bei grossen bildern (wies bei heutigen digicams halt normal ist) relativ langsam.
aus diesem grund werden die thumbnails nach dem ersten erstellen gecachte (siehe fünf-letzte zeile)
ich biete meinem user einen assistenten zum importieren von neuen bildern in die datenbank an. dort kann er wählen, welche bilder aus einem ordner er importieren möchte. es scheint mir arg übertrieben, dort mit dem obigen algorithmus für jedes "eventeuelle" bild bereits ein thumbnail zu generieren.
gibt es eine möglichkeit, den prozess zu optimieren? (vielleicht mit einer anderen library etc.?)
vielen dank für ideen & tipps!
momentan benutze ich folgenden code, um thumbnails für meine fotoverwaltung zu erstellen:
Code:
/* Vorbereiten: */
// Bild holen & in BufferedImage umwandeln:
Image input = Toolkit.getDefaultToolkit().getImage(imageBean.getFile());
BufferedImage original = GUIHelper.toBufferedImage(input);
// Grössen berechnen:
int imgWidth = original.getWidth();
int imgHeight = original.getHeight();
int scaledWidth = 0;
int scaledHeight = 0;
int resizedSide = THUMBNAIL-2*THUMBNAIL_MARGIN;
if (imgWidth >= imgHeight) {
scaledWidth = resizedSide;
scaledHeight = (int)(((double)imgHeight / (double)imgWidth) * (double)resizedSide);
} else {
scaledHeight = resizedSide;
scaledWidth = (int)(((double)imgWidth / (double)imgHeight) * (double)resizedSide);
}
/* Bild verkleinern: */
// Verkleinern:
Image resized = input.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH);
// Warten bis alle Daten da sind:
MediaTracker tracker = new MediaTracker(new Canvas());
tracker.addImage(input,1);
tracker.addImage(resized,2);
try {
tracker.waitForAll();
} catch (InterruptedException e) {
e.printStackTrace();
}
/* Thumbnail erstellen: */
BufferedImage thumbnail = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_BGR);
thumbnail.getGraphics().drawImage(resized, 0, 0, Color.BLACK, null);
try {
ImageIO.write(thumbnail, "jpeg", new File("thumbnails/" + imageBean.getImageid()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
nun ist die generierung bei grossen bildern (wies bei heutigen digicams halt normal ist) relativ langsam.
aus diesem grund werden die thumbnails nach dem ersten erstellen gecachte (siehe fünf-letzte zeile)
ich biete meinem user einen assistenten zum importieren von neuen bildern in die datenbank an. dort kann er wählen, welche bilder aus einem ordner er importieren möchte. es scheint mir arg übertrieben, dort mit dem obigen algorithmus für jedes "eventeuelle" bild bereits ein thumbnail zu generieren.
gibt es eine möglichkeit, den prozess zu optimieren? (vielleicht mit einer anderen library etc.?)
vielen dank für ideen & tipps!