JPG image von JPanel in ScrollPane machen

HarryHut

Mitglied
Hallo Leute,

Ich habe ein JPanel1(GridLayout) auf das ich in einer for-schleife viele Bilder lege...
Dieses JPanel1 lege ich dann auf ein weiteres JPanel2, welches auf einem JScrollPane liegt..

Nun will ich vom JPanel1 jpgs speichern, weiß aber leider nicht wie ich die Größe bei meinem BufferedImage setzen muss, da es mir bei jPanel1.getWidth() immer 0 ausgibt.

Wie kann man das lösen?

Danke!
 
Habe gerade gemerkt, dass es unsinning wäre ein Bild von einem JPanel zu machen, da ich ja alles als BufferedImages habe.
Doch jetzt die Frage wie kann ich ein großes Bild aus vielen kleinen BufferedImages erstellen und speichern!

Danke!
 
Benutze das Graphics vom BufferedImage und zeichne dort Deine Images mit der "drawImage(img, x, y, width, height, this)"-Methode, wobei sich x, y, width und height aus der Anzahl der Teilbilder ergibt.
 
Versteh nicht ganz wie du das meinst:

Also ich habe ne Liste mit BufferedImages und da bekomm durch meine For-Schleife nacheinander die BufferedImages...

Code:
for (int i = 0; i < l.size(); i++) {
                BufferedImage bf = l.getBf(i);

Was muss ich jetzt in der For-Schleife ausführen dass ich ein großes Bild bekomme das aus den BufferedImages besteht?

Code:
Graphics2D gb = bf.createGraphics();
gb.drawImage();

Danke!
 
Mal ne Frage...
habe ich Dich nun so verstanden, dass Du die Bilder lediglich anzeigen willst (in so einer Art Tafel) Oder willst Du die angeordneten Bilder in ein zusammengesetztes Bild speichern?
falls letzteres, denke ich musst Du aus den vielen Bildern ein großes machen und dieses speichern, also die einzelnen Bilder irgendwie in ein BufferedImage schieben.

Takidoso
 
1. leeres BufferedImage erstellen
2. Graphics davon geben lassen
3. wie beschrieben aus Deiner Schleife heraus die BufferedImages auf dieses Graphics zeichnen
 
Was hat es denn mit dem ImageObserver auf sich?

Ich hab es mal so gemacht aber es funktioniert nicht!

Code:
BufferedImage empty = new BufferedImage(800,800, BufferedImage.TYPE_INT_RGB);
Graphics graphics = empty.getGraphics();

for (int i = 0; i < l.size(); i++) {

BufferedImage bf = l.get(i);
graphics.drawImage(bf, widthPos, heightPos, bf.getWidth(), bf.getHeight(), null);
}

ImageIO.write(empty);

Ich setze also den Observer null.
 
Zurück