Fehler beim Image skalieren

Hi,

ich habe ein Programm in dem ich Bilder skalieren muß. Dabei rufe ich eine Methode die dieses übernimmt zwei mal hintereinander auf. Dabei entsteht immer bei einem dieser Bilder ein Fehler in der darstellung, das heißt ein Bild hat immer merkwürdige Streifen. Wenn ich die Funktion nur einmal aufrufe geht es gut. Auch wenn ich ein Thread.sleep() zwischen den beiden Aufrufen mache sind beide Bilder OK. Aber ich will das Programm nicht unnötg verzögern (unprofessionel). Kann mir da jemand helfen?

hier die Methode:

public Image getMedSizedImg(double size, Image img)
{
double factor = 0.0;
MediaTracker mt = new MediaTracker(this);

factor = size / img.getWidth(null);
img = img.getScaledInstance((int)size, (int)(factor*img.getHeight(null)), Image.SCALE_SMOOTH);
mt.addImage(img, 0);
try
{
mt.waitForID(0);
} catch (Exception e){}
mt.removeImage(img, 0);
return img;
}

(das Bild als Parameter wird vorher mit einem MediaTracker geladen)

Vielen Dank!

Hi,

ich habe ein Programm in dem ich Bilder skalieren muß. Dabei
rufe ich eine Methode die dieses übernimmt zwei mal
hintereinander auf. Dabei entsteht immer bei einem dieser
Bilder ein Fehler in der darstellung, das heißt ein Bild hat
immer merkwürdige Streifen.

Das klingt sehr nach multi-theard-Probleme. Versuch beide Image-Objekte gleichzeitg in einen Mediatracker zu stoffen (alle Bilder rein, vorm repaint() ein waitForAll()), oder zumindest keine 2 Mediatracker von einem Object zu erzeugen.

Ausserdem must du aufpassen dass die Methode in keinem Fall im paint-Thread abläuft. Der Mediatracker arbeitet in dem Thread nicht immer richtig.

cu