Verzweiflung beim Laden von Images

jorgeHX

Erfahrenes Mitglied
Hallo,
ich bin langsam am Verzweifeln. Irgendwie will das neue Image nicht zu Beginn laden...
Ich habe in einem Frame 4 Buttons. Jeder Button soll ein anderes Bild laden
Klicke ich auf einen Button so wird zwar das richtige Bild im Frame angezeigt, allerdings wir nur eine Datei mit schwarzen Bild geschrieben. Erst nach erneutem Klicken speichert es auch das richtige Bild ab.
Ich denke, dass es irgendwie mit dem image zusammenhängt, da es so erscheint, als wenn es zu Beginn nicht richtig da ist.

Ich habe unten mal die Methode eingefügt, die aufgerufen wird, sobald man auf einen Button klickt. Der übergebene Wert ist einmal eine Zahl für den geklickten Button und dann der Hinweis, ob das Bild schwarz/weiß oder farblich angezeigt werden soll.

Vielen Dank schon jetzt für eure Hilfe.

Code:
protected void saveNewImage(int part, boolean blackWhite) throws Exception{
    // 1=SpielfeldHorizontal
    // 2=SpielfeldVertikal
    // 3=SpielfeldOben
    // 4=SpielfeldUnten

    BufferedImage scrImage;
    Graphics2D scrGraphic;

    //lese Name
    String name_str = name_tf.getText();

    // lese ziel
    String ziel_str = ziel_cb.getSelectedItem().toString();


    // hole das alte Image, damit ein neues Hineingeschrieben werden kann
    String picPath = null;
    switch (part) {
      case 1:
        image = Toolkit.getDefaultToolkit().getImage(
            "Icons/uebungIcons/SpielfeldQuer.jpg");
        break;
      case 2:
        image = Toolkit.getDefaultToolkit().getImage(
            "Icons/uebungIcons/SpielfeldOU.jpg");
        break;
      case 3:
        image = Toolkit.getDefaultToolkit().getImage(
            "Icons/uebungIcons/SpielfeldHalbOben.jpg");
        break;
      case 4:
        image = Toolkit.getDefaultToolkit().getImage(
            "Icons/uebungIcons/SpielfeldHalbUnten.jpg");
        break;
    }


    picPath = "Icons\\uebungIcons\\" + ziel_str + name_str +
         ".jpg";
    dateiname = "Icons/uebungIcons/" + ziel_str + name_str +
         ".jpg";


    int imageWidth = image.getWidth(null);
    int imageHeight = image.getHeight(null);
    

    scrImage = new BufferedImage(imageWidth, imageHeight,
                                 BufferedImage.TYPE_INT_RGB);

    scrGraphic = scrImage.createGraphics();
    scrGraphic.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                                RenderingHints.VALUE_INTERPOLATION_BILINEAR);

    scrGraphic.drawImage(image, 0, 0, 750, 550, null);

    ImageIO.write(scrImage, "jpeg", new File(picPath));
    icon1.getImage().flush();

  }
 
Weiß den Niemand hier Rat?
Ich denke dass es zwei Gründe für mein Problem gibt. Entweder das Image wird nicht richtig geladen zu Beginn oder etwas stimmt mit meinem BufferedImage scrImage zu Beginn nicht. Aber was bloß. Bitte postet falls euch was einfällt. danke
 
Sorry, mit dem ganzen Zeichnen und Dateikram tue ich mir etwas schwer, deshalb bin ich dabei keine große Hilfe. Ich kann Dir noch nicht mal sagen, ob Du vielleicht mit einem MediaTracker arbeiten solltest/kannst.
 
Hi Snape,
hättest du gestern geantwortet, so hätte ich den ganzen Tag gerettet, :) Bevor dein Posting kam, hab ich den MediaTracker selbst versucht und es klappt.
Dennoch super vielen Dank
 
Hehe, aber letzlich verstehen tue ich das nicht, warum Dein erster Versuch fehlschlägt und was der MediaTracker anders/besser macht, so dass es nun funktioniert.
 
Hallo!

Du könntest statt dem MediaTracker auch ImageIcons zum laden der Bilder verwenden...
Code:
package de.tutorials;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class ImageTest {

	public static void main(String[] args) {
		Image img = null;
		/*
		 * entweder so:
		 * (ImageIcon verwendet intern schon einen MediaTracker...)
		 */ 
		 //ImageIcon icon = new ImageIcon("c:/Beispiel.jpg"); img =
		 //icon.getImage();
		 

		//oder:
		try {
			img = ImageIO.read(new File("c:/Beispiel.jpg"));
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		if (img == null)
			return;

		int h = img.getHeight(null), w = img.getWidth(null);

		BufferedImage bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

		bimg.getGraphics().drawImage(img, 0, 0, null);

		bimg.getGraphics().drawString("" + System.currentTimeMillis(), 50, 50);

		try {
			ImageIO.write(bimg, "jpeg", new File("c:/beispielTmp.jpg"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Gruß Tom
 

Neue Beiträge

Zurück