2012-04-15 9 views
1

Ich habe mich gefragt, wie ich die Helligkeit eines Bildes am schnellsten ändern kann. Ich habe die 'RescaleOp'-Methode implementiert, aber ich weiß nicht, ob dies die schnellste Methode ist oder andere. Hier ist meine Implementierung, wo ich Eingang ein Bild, um die Helligkeit zu ändern, und geben ein Bild:Java: Schnellste Möglichkeit, die Helligkeit eines Bildes zu ändern

public static Image setBrightness(Image i) { 
    BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
    buff.createGraphics().drawImage(i, 0, 0, null); 
    RescaleOp op = new RescaleOp(brightness, offsets, null); 
    BufferedImage buff1 = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
    buff1.createGraphics().drawImage(buff, op, 0, 0); 
    return Toolkit.getDefaultToolkit().createImage(buff1.getSource()); 
} 

PS: Ich muss auch die BufferedImage zurück in ein Bild umwandeln, weil mein Computer Rendering BufferedImages nicht mag.

+2

„... weil mein Computer Rendering BufferedImages nicht mag.“ Das ergibt überhaupt keinen Sinn. Können Sie erklären?? – ControlAltDel

+0

Es bleibt schrecklich zurück, wenn ich mehr als 50 gleichzeitig rendere. Ich übertrage in meinem Fall über 2000. Aber ich muss nur wissen, wie man die Bildhelligkeit so schnell wie möglich ändert, so dass die Frage nicht wirklich relevant ist. – MrDrProfessorTyler

+1

Dann würde ich vorschlagen, dass die optimale Lösung wäre, einfach die Anzahl der BufferedImages zu steuern, die Sie gleichzeitig rendern. – ControlAltDel

Antwort

2

Alles, was ich gelesen habe, führt mich zu glauben, dass RescaleOp ist die beste, schnellste Option

+0

Okay klingt gut für mich. Danke für die Hilfe – MrDrProfessorTyler