Java Bilder erzeugen

Tron36

Ensign
Registriert
Jan. 2011
Beiträge
209
Hallo Leute,

es geht darum, dass ich mit Java BMP-Bilder mit voller Farbsättigung (960*540 Auflösung und 24 Bit) in den Farben Blau, Gelb und Rot erzeugen und diese halt als BMP Bilder abspeichern und aus diesen jede mögliche Farbmischung erzeugen wollte.

Mir ist aktuell nicht Klar mit welchen Befehlen ich für die Größe und die Farbtiefe(?) also die 24 Bit setzen muss. Die Farben setzt man mit Color? Und vor allem wie erzeuge ich ein BMP-Bild? Mit BufferedImage? Vor allem, wie setze ich die 24 Bit?

Ich würde mich um eure Hilfe freuen.

Mit feundlichen Grüßen
Tron36
 
Zuletzt bearbeitet:
Ist nicht mein Fachgebiet, aber:
Canvas nutzt doch 24Bit RGB + 8Bit Alpha.

Mit getImageData() kriegst du direkt die Pixel im RGBA-Format.
Drop die Alpha-Bits und raus mit dem Stream.

https://de.wikipedia.org/wiki/Windows_Bitmap
Der Header scheint recht einfach zu sein.
 
Folgendes lauffähiges Beispiel sollte Deine Fragen beantworten:

Code:
import java.awt.Color;
import java.awt.image.BufferedImage;

import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;




public class CreateBMP
{
    public static void main(String args[]) throws IOException
    {
        int width = 960;
        int height= 540;
        
        BufferedImage image= new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
        for(int x= 0; x<width; x++)
        {
            for(int y= 0; y<height; y++)
            {
                image.setRGB(x, y, Color.YELLOW.getRGB() );
            }
        }
        
        ImageIO.write(image, "bmp", new File("image_960x540_yellow.bmp") );
    }
}
Tron36 schrieb:
Mir ist aktuell nicht Klar mit welchen Befehlen ich für die Größe und die Farbtiefe(?) also die 24 Bit setzen muss.
BufferedImage.TYPE_3BYTE_BGR
Siehe auch
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/image/BufferedImage.html (Java 11)
bzw.
https://docs.oracle.com/javase/8/docs/api/java/awt/image/BufferedImage.html (Java 8)

Tron36 schrieb:
Die Farben setzt man mit Color?
Rischtisch!
Siehe auch
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Color.html (Java 11)


HTH

BigNum
 
Hi,

das mit BufferedImage hatte ich auch gesehen. Aktuell ist mir ehrlich gesagt, nicht klar wie ich die 24 Bit setze, da z.B. TYPE_3BYTE_BGR, sowie die anderen parameter 8-Bit setzten sollen.

Lg
Tron36
 
Aber sind 24Bit Farbtiefe nicht 8Bit pro Kanal also 3Byte für B(lue) G(reen) R(ed)? Damit hast du ein BufferedImage mit 24Bit Farbtiefe.
 
Zurück
Oben