Hallo zusammen!
weiss jemand von euch wie man ein Bild am performantesten skaliert? Meine Lösung dauert auf meiner Maschine (3.0 Ghz) fast 1000 ms wenn ein Bild von 1280*1024 z.B. auf 1024*960 skaliert werden soll. Dies ist für mich leider definitiv
zu viel!
Bin um jeden Vorschlag dankbar!
Grüsse gegel
weiss jemand von euch wie man ein Bild am performantesten skaliert? Meine Lösung dauert auf meiner Maschine (3.0 Ghz) fast 1000 ms wenn ein Bild von 1280*1024 z.B. auf 1024*960 skaliert werden soll. Dies ist für mich leider definitiv
zu viel!
Code:
public void generateImage() {
ImageLoader loader = ImageLoader.getInstance();
if(image==null) {
try {
long starttime = System.currentTimeMillis();
image = loader.getImage(this);
long loadedtime = System.currentTimeMillis() - starttime;
int h = image.getImage().getHeight(this);
int w = image.getImage().getWidth(this);
if(h>maxImageHeight || w>maxImageWidth) {
//start scaling
long scaletimestart = System.currentTimeMillis();
int sh = 0;
int sw = 0;
if(h>w) {
sh = maxImageHeight;
double factor = (double)h/(double)sh;
sw = ((int)((double)w/factor));
} else {
sw = maxImageWidth;
double factor = w/sw;
sh = ((int)((double)h/factor));
}
java.awt.Image scaledAWTImage = image.getImage().getScaledInstance(sw, sh, java.awt.Image.SCALE_SMOOTH);
image = new ImageIcon(scaledAWTImage);
long scaletime = System.currentTimeMillis() - scaletimestart;
Log.debug(getClass(), "GeneratedImage ("+getImageName()+"("+getId()+"). Loading: "+loadedtime+" ms, Scaling: "+ scaletime+" ms");
} else {
Log.debug(getClass(), "GeneratedImage ("+getImageName()+"("+getId()+"). Loading: "+loadedtime+" ms");
}
} catch(ImageUnavailableException e) {
Log.exc(getClass(), e);
}
}
}
Bin um jeden Vorschlag dankbar!
Grüsse gegel