Images addieren und mit JOptionPane ausgeben?

dalsland2003

Grünschnabel
Hallo,

ich bin der absolute Java-DAU (vor 4 Wochen angefangen) und habe eine Programmieraufgabe zu lösen, in der ich Operationen auf images auszuführen habe. Unter anderen soll ich zwei images addieren und das Ergebnis mit JOptionPane.showMessageDialog ausgeben. Ist das überhaupt möglich?

Viele Grüße
dalsland2003
 
Hi !

Deine Fragestellung ist sehr verbesserungswürdig ..
Definiere zuerst einmal "addieren" und "Ergebnis" ..
Dann sehen wir weiter ;) ..

Gruß Stefan
 
gute Frage, nächste Frage ;-). Die Aufgabenstellung gibt leider nicht mehr her.

Eine zu realisierende Funktion ist auch die Invertierung. Hierbei würde ich so vorgehen, dass ich die RGB-Werte invertiere (also die Differenz zu 255 bei einem 8-Bit-Farbbild ermittel).

Addiere würde ich dann für mich bedeuten, die jeweiligen RGB-Werte der einzelnen Punkte zu addieren und den Überlauf zu ignorieren.

Ergebnis wäre dann wiederum ein Image, das aus der Addition zweier Bilder besteht, wobei noch zu definieren wäre, was man mit unterschiedlichen großen Bildern macht.

Viele Grüße
dalsland2003
 
Moin!
Wie auch immer du jetzt deine Operationen auf den Bildern realisieren willst,
schau dir die Skizze hier mal an:

Code:
BufferedImage one = ImageIO.read(filenameOne);
BufferedImage two = ImageIO.read(filenameTwo);
 int minWidth;
int minHeight;
if(one.getHeight() < two.getHeight()) minHeight = one.getHeight();
else minHeight = two.getHeight();
if(one.getWidth() < two.getWidth()) minWidth = one.getWidth();
 else minWidth = two.getWidth();
BufferedImage result = new BufferedImage(minWidth,minHeight,TYPE_INT_ARGB);
 for(int i=0; i < minWidth; i++){
    for(int j=0; 0 <minHeight; j++){
       int rgbOne = one.getRGB();
       int rgbTwo = two.getRGB();
       int rgbResult = doSomeOperation(rgbOne,rgbTwo); 
       result.setRGB(i,j,rgbResult);
    }
}
Das ResultImage ist also nur so gross, wie die Überschneidung der beiden Quellbilder. Wenn du keine anderen Informationen hast, würde ich es sinnvollerweise so machen.


Kann es mir aber irgendwie nicht vorstellen, das man das Ergebnisbild ausgerechnet mittels JOptionPane.showMessageDialog() ausgeben soll. Ich kann mich ja täuschen, aber die einzige Möglichkeit das so zu machen, ist das Bild in ein Icon umzuwandlen und dann im Dialog anzuzeigen:
Code:
JOptionPane.showMessageDialog(parentComponent,messageObject, titleString, INFORMATION_MESSAGE, new ImageIcon(result));

*grüssle*
MeinerEiner
 
Hi MeinerEiner,

vielen Dank für deine tolle Hilfestellung. Ich werde das am Wochenende austesten und berichten.

MeinerEiner_80 hat gesagt.:
Kann es mir aber irgendwie nicht vorstellen, das man das Ergebnisbild ausgerechnet mittels JOptionPane.showMessageDialog() ausgeben soll. [...]

Genau das konnte ich mir auch nicht vorstellen, aber ich habe das auf meine fehlenden Java-Kenntnisse zurückgeführt.

Viele Grüße
dalsland2003
 
Zurück