BufferedImage manipulieren - Helligkeit erhöhen

DarthShader

Erfahrenes Mitglied
Hallo,

ich würde gerne mit Java ein Bild in seiner Helligkeit verändern. Das Bild habe ich bereits per ImageIO geladen (habe eine Instanz von BufferedImage) und mir reicht es, wenn das Bild im Speicher verändert wird, ich möchte es nicht wieder abspeichern.

Bietet Java da schon eingebaute Funktionen (ich nutze Java 6), um solche Bildmanipulationen zu machen? Ich möchte mich nur ungern von anderen Bibliothken abhängig machen in diesem Projekt. Falls Java das so nicht bietet, dann könnte ich ja sicher auch alle Pixel des Bildes durchgehen und diese um einen bestimmten Wert heller machen. Wenn ich das so tun muss, kann mir jemand einen Tip geben, wie ich an die Pixel eines BufferedImage herankomme?

Vielen Dank für Eure Hilfe!
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.File;

import javax.imageio.ImageIO;

/**
 * @author Thomas.Darimont
 *
 */
public class BrighterImageExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        File file = new File("c:/SpringContextInitializationProgressViaJMX.jpg");
        BufferedImage image = ImageIO.read(file);
        
        
        BufferedImage brighterImage = new BufferedImage(image.getWidth(),image.getHeight(),image.getType());
        
        float brightness = 1.2f;
        float[] scaleFactors = {brightness,brightness,brightness};
        RescaleOp rescaleOp = new RescaleOp(scaleFactors,new float[3],null);
        
        ((Graphics2D)brighterImage.getGraphics()).drawImage(image, rescaleOp, 0, 0);
        
        ImageIO.write(brighterImage, "jpg", new File(file.getParent()+ "/brighter_"+file.getName()));        
        
    }

}

Gruß Tom
 
Zurück