Hallo,
ich muss Bilder verkleinern und hätte gern mal euere Meinung bzw. euren Rat: Anbei 2 Methoden, die ein Bild gleichermaßen skalieren jedoch in unterschiedlicher Qualität:
Nun heißt es immer (also hab das schon diversen anderen Foren und Artikeln gelesen), dass man auf BufferedImage.getScaledInstance verzichten soll. Siehe u.a. hier:
http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html
Nun muss ich sagen, dass die 2. Variante dass eindeutig bessere Ergebnis liefert, heißt es sind noch viele Details auf einem kleinen Bild annäherungsweise erkennbar, während die Qualität der 1. Variante zwar merklich schneller, aber das verkleinerte Bild nicht so toll aussieht :-/
Ich bin nun ein wenig verwirrt. Was bzw. welche Variante soll ich nun verwenden. Ideal wäre ein optimaler Kompromiss zwischen Quality und Speed, da aber teilweise viele Bilder aus einer List dieser FUnktion unterzogen werden, ist die 2. Variante merklich vieel zu langsam.
Was soll ich tun :-(
ich muss Bilder verkleinern und hätte gern mal euere Meinung bzw. euren Rat: Anbei 2 Methoden, die ein Bild gleichermaßen skalieren jedoch in unterschiedlicher Qualität:
Code:
public final static BufferedImage resizeImageByFactor(BufferedImage image, double factor) {
int width = (int)(image.getWidth() * factor);
int height = (int)(image.getHeight() * factor);
BufferedImage newimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
newimage.createGraphics().drawImage(image.getScaledInstance(width, height, Image.SCALE_SMOOTH),0,0,null);
return newimage;
}
Code:
public final static BufferedImage resizeImageByFactor(BufferedImage image, double factor) {
int width = (int)(image.getWidth() * factor);
int height = (int)(image.getHeight() * factor);
BufferedImage newimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
newimage.createGraphics().drawImage(image,0,0,width, height, null);
return newimage;
}
Nun heißt es immer (also hab das schon diversen anderen Foren und Artikeln gelesen), dass man auf BufferedImage.getScaledInstance verzichten soll. Siehe u.a. hier:
http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html
Nun muss ich sagen, dass die 2. Variante dass eindeutig bessere Ergebnis liefert, heißt es sind noch viele Details auf einem kleinen Bild annäherungsweise erkennbar, während die Qualität der 1. Variante zwar merklich schneller, aber das verkleinerte Bild nicht so toll aussieht :-/
Ich bin nun ein wenig verwirrt. Was bzw. welche Variante soll ich nun verwenden. Ideal wäre ein optimaler Kompromiss zwischen Quality und Speed, da aber teilweise viele Bilder aus einer List dieser FUnktion unterzogen werden, ist die 2. Variante merklich vieel zu langsam.
Was soll ich tun :-(