Hallo,
ich zeichne sehr große Images (bis zu 30MB) und irgendwie ist das ganze viel zu langsam, wenn ich das mal so vergleiche mit ImageJ
Hier mal ein Stück Code
Die SystemTime hab ich geholt um mal zu schauen wo es denn eigentlich langsam ist - es ist die g2.drawImage Stelle - da wo auch kritische Stelle kommentiert wurde
Ich versteh einfach nicht warum das an dieser Stelle mit einem 28MB Bild satte 1600ms dauert. Wenn ich es per Zoom noch skalieren lasse komme ich auf 2000ms
Gibt es bessere Methoden oder mache ich was falsch? Ich bin über jede Hilfe dankbar
ich zeichne sehr große Images (bis zu 30MB) und irgendwie ist das ganze viel zu langsam, wenn ich das mal so vergleiche mit ImageJ
Hier mal ein Stück Code
Java:
protected void paintComponent(Graphics g) {
long t1 =System.currentTimeMillis();
super.paintComponent(g);
if (this.image != null) {
Graphics2D g2 = (Graphics2D) g;
int newW = (int) (image.getWidth() * scaleFactor);
int newH = (int) (image.getHeight() * scaleFactor);
size=new Dimension(newW,newH);
this.setPreferredSize(size);
this.revalidate();//0-15 ms
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
//RenderingHints.VALUE_INTERPOLATION_BILINEAR);
RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
//RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.drawImage(image, 0, 0, newW, newH, null); //KRITISCHE STELLE
System.out.println(System.currentTimeMillis()-t1);
g2.dispose();
System.out.println("T2 ");
}
}
Die SystemTime hab ich geholt um mal zu schauen wo es denn eigentlich langsam ist - es ist die g2.drawImage Stelle - da wo auch kritische Stelle kommentiert wurde
Ich versteh einfach nicht warum das an dieser Stelle mit einem 28MB Bild satte 1600ms dauert. Wenn ich es per Zoom noch skalieren lasse komme ich auf 2000ms
Gibt es bessere Methoden oder mache ich was falsch? Ich bin über jede Hilfe dankbar