M
MarcM
Gast
Hallo allerseits,
für ein Meteorologisches Tool muss ich mehrere Bilder (Satellitenbilder und so'n Kram) in einen Bild rendern.
Das funktioniert soweit auch sehr gut - jedoch habe ich bei einigen gif-Bildern sehr seltsame Fehler.
Alle anderen Bildformate funktionieren reibungslos - was allerdings noch nicht heißen muss, dass es wirklich am Format liegt.
Das Bild, das ich rendern möchte liegt bereits geladen im Arbeitsspeicher vor und wird nach dem Laden weder verändert, neu geladen oder ersetzt.
Mit einem MediaTracker stelle ich zudem noch sicher, dass das Bild wirklich bereit zum Zeichnen ist.
Immer wenn das Quellbild via drawImage() in das Zielbild zeichne passiert beim ersten Aufruf von drawImage() oft gar nichts. Wenn ich das gleiche Bild nochmal zeichne wird es meist vollständig gerendert.
Bei jedem weiteren Render-Aufruf wird das Bild zu 90% korrekt gerendert, in ca. 5% der Fälle wird es gar nicht angezeigt und in den verbleibenden 5% wird es nur halb gerendert (obere hälfte).
Es klingt eigentlich alles danach, dass das Bild noch nicht fertig geladen ist, jedoch treten die Fehler lange nachdem das Bild geladen wurde - und auch schon mehrfach korrekt gezeichnet wurde, auf.
Seltsamerweise funktioniert der gleiche Code für andere, zum Teil deutlich größere Bilder im PNG und JPEG Format einwandfrei.
Das drawLine() in der letzten Zeile funkioniert wie erwartet immer fehlerfrei und wird auch dann korrekt gerendert, wenn das gif-Bild nur halb oder gar nicht gerendert wird.
Ich hab mich schon durch hunderte von Foren gekämmt und halb totgegoogelt - vielleicht hat von Euch jemand eine Idee.
Vielen Dank,
-Marc-
für ein Meteorologisches Tool muss ich mehrere Bilder (Satellitenbilder und so'n Kram) in einen Bild rendern.
Das funktioniert soweit auch sehr gut - jedoch habe ich bei einigen gif-Bildern sehr seltsame Fehler.
Alle anderen Bildformate funktionieren reibungslos - was allerdings noch nicht heißen muss, dass es wirklich am Format liegt.
Das Bild, das ich rendern möchte liegt bereits geladen im Arbeitsspeicher vor und wird nach dem Laden weder verändert, neu geladen oder ersetzt.
Mit einem MediaTracker stelle ich zudem noch sicher, dass das Bild wirklich bereit zum Zeichnen ist.
Immer wenn das Quellbild via drawImage() in das Zielbild zeichne passiert beim ersten Aufruf von drawImage() oft gar nichts. Wenn ich das gleiche Bild nochmal zeichne wird es meist vollständig gerendert.
Bei jedem weiteren Render-Aufruf wird das Bild zu 90% korrekt gerendert, in ca. 5% der Fälle wird es gar nicht angezeigt und in den verbleibenden 5% wird es nur halb gerendert (obere hälfte).
Es klingt eigentlich alles danach, dass das Bild noch nicht fertig geladen ist, jedoch treten die Fehler lange nachdem das Bild geladen wurde - und auch schon mehrfach korrekt gezeichnet wurde, auf.
Code:
...
Graphics2D g=destinationRenderBuffer.createGraphics();
Rectangle rect=new Rectangle(0, 0, 500, 500);
Image img=myStupidSatteliteImage.getImage();
MediaTracker m=new MediaTracker(MainGUI.getInstance().mainFrame);
m.addImage(img, 0);
try
{
m.waitForAll();
}
catch (Exception e)
{
e.printStackTrace();
}
g.drawImage(img, rect.x, rect.y, rect.width, rect.height, null);
g.drawLine(0, 0, 1000, 1000);
...
Seltsamerweise funktioniert der gleiche Code für andere, zum Teil deutlich größere Bilder im PNG und JPEG Format einwandfrei.
Das drawLine() in der letzten Zeile funkioniert wie erwartet immer fehlerfrei und wird auch dann korrekt gerendert, wenn das gif-Bild nur halb oder gar nicht gerendert wird.
Ich hab mich schon durch hunderte von Foren gekämmt und halb totgegoogelt - vielleicht hat von Euch jemand eine Idee.
Vielen Dank,
-Marc-