ImageIO gif Dateien laden

BlubBlub

Bekanntes Mitglied
hi ich wollte eine gif laden und anschließend an einem neuen ort speichern.
die gif datei ist animiert. wenn ich den unteren code verwende dann funktioniert das laden
des bildes in meinen editor. die animation funtkioniert.

Java:
class ViewComponent extends JComponent
{
	private Image image;
 
	public void setImage( File file )
	{
		image = Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );
	
		if ( image != null )
			repaint();
	}
  
	@Override
	protected void paintComponent( Graphics g )
	{
		if ( image != null )
			g.drawImage( image, 0, 0, this );
	}
}


wenn ich aber folgenden code verwende wird die gif datei zwar auch in meinem editor angezeigt,
aber die animation funktioniert nicht. es wird nur ein bild davon angezeigt.

Java:
class ViewComponent extends JComponent
{
	private Image image;
 
	public void setImage( File file )
	{
		
		 try {
	           	image  = ImageIO.read( file );
	            
	 
	        } catch( IOException ex){
	            ex.printStackTrace();
	        }  
	
		if ( image != null )
			repaint();
	}
  
	@Override
	protected void paintComponent( Graphics g )
	{
		if ( image != null )
			g.drawImage( image, 0, 0, this );
	}
}

ich muss es aber mit dem zweiten code hinkriegen, da der zweite code ein BufferedImage objekt zurückliefert, welches das Interface RenderedImage implementiert.
dies ist wichtig da ich das RenderedImage Objekt für die ImageIO.write methode brauche.
da ich später folgendes machen will:

Java:
        try {
            BufferedImage image  = ImageIO.read( file );
            ImageIO.write( image, "gif", file2);
 
        } catch( IOException ex){
            ex.printStackTrace();
        }

die ImageIO.write Methode fordert als erstes Argument ein Rendered Objekt.
Das gif das in einer neuen Datei gespeichert wird, sollte dann natürlich auch beim öffnen,
wieder funktionieren, also animiert und nicht nur ein Bild der Animation anzeigen.
 
Zuletzt bearbeitet:

AlexSpritze

Bekanntes Mitglied
Java:
Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );

liefert dir erstmal ein Image zurück, aber vielleicht lässt es sich ja in ein BufferedImage oder RenderedImage konvertieren?

Wieso musst du den zweiten Ansatz nehmen?
 

BlubBlub

Bekanntes Mitglied
müssen weil ImageIO.write( RenderedImage, "Dateiyp", file2)
ein RenderedImage benötigt.

Und mit
Java:
 image = Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );
erhalte ich kein RenderedImage.
Also muss ich das Bild mit

Java:
                image  = ImageIO.read( file );
laden
 

AlexSpritze

Bekanntes Mitglied
Hier steht etwas zur Konvertierung von Image zu RenderedImage.

Angeblich einfach casten:
Java:
BufferedImage image = ImageIO.read(file.toURL());

Oder schauen von welchen Klassen das Objekt image überhaupt ist:

Java:
 Image image = Toolkit.getDefaultToolkit().getImage( file.getAbsolutePath() );
 for(Class<?> c : image.getClass().getClasses(){
   System.out.println(c.getSimpleName());
 }
 for(Class<?> c : image.getClass().getDeclaredClasses(){
   System.out.println(c.getSimpleName());
 }

Vielleicht ist da schon was dabei?
 
Zuletzt bearbeitet:

BlubBlub

Bekanntes Mitglied
nee das funktioniert nicht.
Java:
BufferedImage image = ImageIO.read(file.toURL());
das lässt der compiler nicht zu.

das andere funktioniert auch nicht.
 

BlubBlub

Bekanntes Mitglied
ich hab mal ein wenig weiter im internet recherchiert und dabei folgendes gefunden.
also das abspeichern von gif bildern, zumindest von animierten gif bildern wird nicht funktionieren.


Da es rechtliche Probleme mit dem GIF-Format beim Schreiben gibt, wollte Sun keine Lizenzen zahlen und hat sich gegen Schreibmethoden entschieden

Java ist auch eine Insel – 14.9 Bilder anzeigen und Grafiken verwalten

14.9.16 Bilder im GIF-Format speichern downtop

Java bietet uns als nette Hilfe das Laden von GIF- und JPG-kodierten Grafiken an. Leider blieben Routinen zum Speichern in dem einen oder anderen Dateityp auf der Strecke – und auch erst seit Java 1.2 hilft uns die Klasse JPEGImageEncoder beim Sichern von JPGs. Doch ist das Laden von GIF-Dateien überhaupt gestattet? Da UNISYS das Patent auf den Kompressionsalgorithmus Welch-LZW für GIF-Dateien hält, ist es eine rechtliche Frage, ob wir UNISYS Geld für das Laden von GIF-Dateien zum Beispiel aus Applets bezahlen müssen. Auf die an UNISYS gestellte Frage »If I make an applet (for profit) which loads a GIF image using the Java API function, will I need a license from you?« antwortet Cheryl D. Tarter von UNISYS: »Yes, you need a license from Unisys«. Das bedeutet im Klartext, dass eigentlich alle bezahlen müssten. Eine weitere Anfrage an die für Lizenzen zuständige Stelle bestätigte dies. Mit einer Klage seitens UNISYS ist jedoch nicht zu rechnen, und beim Lesen von GIF-Dateien ist somit keine Gefahr zu erwarten. Wer jedoch Bibliotheken zum Schreiben von LZW-komprimierten GIF-Dateien anbietet, sollte vorsichtig sein. Der Patentinhaber ist im Jahr 2000 dazu übergegangen, von Betreibern von Web-Seiten pauschal 5 000 Dollar Lizenzgebühren einzufordern, wenn sie nicht nachweisen können, dass die verwendeten GIF-Grafiken mit lizensierter Software erstellt wurden. Eine nette Web-Seite zu dem Thema findet sich unter Unisys Patents Expired, But Patent Threats Continue.

Java ist auch eine Insel – 14.9 Bilder anzeigen und Grafiken verwalten
 

slawaweis

Bekanntes Mitglied
hi ich wollte eine gif laden und anschließend an einem neuen ort speichern.
die gif datei ist animiert. wenn ich den unteren code verwende dann funktioniert das laden
des bildes in meinen editor. die animation funtkioniert.
ich weis jetzt nicht genau was Du mit Animation meinst. Nach meiner Erfahrung lädt Toolkit nur das erste Bild eines animierten GIFs.

RenderedImage ist ein Interface. ImageIO erwartet also ein Objekt, welches RenderedImage implementiert hat. BufferedImage implementiert dieses, also kannst Du es an ImageIO.write übergeben.

nee das funktioniert nicht.
Java:
BufferedImage image = ImageIO.read(file.toURL());
das lässt der compiler nicht zu.

doch, es sollte so gehen, read() liefert ein BufferedImage zurück. Vielleicht versuchst Du es nur mit "file".

Deine Zitate zum GIF Format sind veraltet. Das Patent ist vor ein paar Jahren ausgelaufen und Java 6 kann GIF lesen und schreiben, auch animierte Dateien. Doch mit ImageIO ist das nicht ganz trivial. ImageIO ist ein Framework zu Bildbearbeitung, Toolkit einfach nur ein Hilfskasten. Um ein animiertes Bild mit ImageIO einzulesen, muss man den speziellen ImageReader holen und jedes Bild einzeln einlesen. Beim Speichern muss man eine ziemlich komplizierte Prozedur durchführen. Hier steht wie, ist aber ziemlich heavy:

Java 2D - Create animated GIF using imageio

Falls Du nicht vorhast das animierte Bild zu verändern, kannst Du es einfach Byte für Byte kopieren und brauchst es nicht zu decodieren bzw. wieder codieren.

Slawa
 
Zuletzt bearbeitet:

BlubBlub

Bekanntes Mitglied
ich weis jetzt nicht genau was Du mit Animation meinst. Nach meiner Erfahrung lädt Toolkit nur das erste Bild eines animierten GIFs.

mit animation meine ich, dass das gif bild nicht nur aus einem einzigen bild besteht, sondern aus mehreren, die im zyklus wechseln.
das toolkit lädt nicht nur das erste bild eines animierten GIFs. hab es schon ausprobiert, damit
lässt sich mühelos die gesamte animation anzeigen.

RenderedImage ist ein Interface. ImageIO erwartet also ein Objekt, welches RenderedImage implementiert hat. BufferedImage implementiert dieses, also kannst Du es an ImageIO.write übergeben.

dessen bin ich mir schon bewußt, aber das problem hierbei liegt, dass ich damit nur das erste bild eines gifs erhalte.
und wenn du sagst dass es ziemlich kompliziert ist alle bilder des gifs damit darzustellen, ist mir der aufwand zu hoch, da ich mit Toolkit mühelos gifs laden und anschließend korrekt wiedergeben kann.
ledigilich das speichern mit Toolkit funktioniert nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Bild Beschreibung mit ImageIO speichern AWT, Swing, JavaFX & SWT 1
M "ImageIO.read()" liest Bild nicht richtig ein AWT, Swing, JavaFX & SWT 3
B Probleme bei ImageIO.read (?!) AWT, Swing, JavaFX & SWT 9
B Problem mit ImageIO.write() AWT, Swing, JavaFX & SWT 7
B ImageIO und animerte gifs? AWT, Swing, JavaFX & SWT 4
N ImageIO Endung mitgeben AWT, Swing, JavaFX & SWT 4
M ImageIO, Bilderordner durchblättern AWT, Swing, JavaFX & SWT 4
S toolkit vs. imageIO AWT, Swing, JavaFX & SWT 4
T Swing ImageIO - nicht abfangbare IOException AWT, Swing, JavaFX & SWT 5
B ImageIO.read() zweimal hintereinander aus ObjectInputStream funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Problem mit imageIO und ImageIcon AWT, Swing, JavaFX & SWT 5
U ImageIO.read verursacht heap space AWT, Swing, JavaFX & SWT 15
G Problem mit BufferedImage und imageIO AWT, Swing, JavaFX & SWT 2
H ImageIO.write-Probleme, Speicherüberlauf und Absturz AWT, Swing, JavaFX & SWT 12
I BMP mit ImageIO schreiben AWT, Swing, JavaFX & SWT 1
M Java Dateien kopieren mit Fortschrittsbalken AWT, Swing, JavaFX & SWT 13
frager2345 Bild aus Dateien lesen und als Hintergrund verwenden AWT, Swing, JavaFX & SWT 2
N Dateien einlesen und in GUI immernoch auswählbar AWT, Swing, JavaFX & SWT 1
MiMa File Dateien im ListView als Name anzeigen? AWT, Swing, JavaFX & SWT 6
H JavaFX Media Dateien zu VideoPlayerController senden AWT, Swing, JavaFX & SWT 10
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
F Output Stream / File Dateien / Speichern AWT, Swing, JavaFX & SWT 13
Z Bearbeitung von csv Dateien AWT, Swing, JavaFX & SWT 13
J JavaFX Wie verhindere ich das gleichzeitige Spielen von Dateien bei Mediaplayer JavaFX? AWT, Swing, JavaFX & SWT 3
E JavaFX Umgang mit SVG-Dateien AWT, Swing, JavaFX & SWT 0
S Swing JFileChooser best. Ordner wie Dateien behandeln AWT, Swing, JavaFX & SWT 4
D Dateien öffnen AWT, Swing, JavaFX & SWT 16
S Swing txt Dateien öffnen mit JFilleChooser AWT, Swing, JavaFX & SWT 4
B Swing Dateien im Swing-GUI anzeigen AWT, Swing, JavaFX & SWT 3
H RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an AWT, Swing, JavaFX & SWT 1
E 2D-Grafik Speicherprobleme große Tiff-Dateien AWT, Swing, JavaFX & SWT 50
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
M Swing Dateien auf Muster analysieren AWT, Swing, JavaFX & SWT 30
J Auf Dateien in JTree zugreifen AWT, Swing, JavaFX & SWT 15
MiMa Dateien aus Ordner in einer JList Ausgeben AWT, Swing, JavaFX & SWT 32
Daniel_L Drop von Dateien auf Frame - welche Drop-Location? AWT, Swing, JavaFX & SWT 2
H * Einlesen von Text-Dateien & Zeichensatz bestimmen AWT, Swing, JavaFX & SWT 2
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
N verschieben von Dateien auf der Festplatte über TreePaths funktioniert nicht AWT, Swing, JavaFX & SWT 10
F AWT DnD von Dateien mit Sonderzeichen funktioniert unter Linux nicht AWT, Swing, JavaFX & SWT 3
D LayoutManager Main layout auf andere Class Dateien verweisen? AWT, Swing, JavaFX & SWT 17
R Windows-Dateien auf GUI ziehen AWT, Swing, JavaFX & SWT 3
M Swing JTable Drag'n'Drop von Dateien AWT, Swing, JavaFX & SWT 3
S Dateien kopieren mit ProgressBar AWT, Swing, JavaFX & SWT 6
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
Developer_X Java BMP-Dateien laden AWT, Swing, JavaFX & SWT 2
T Compiler erzeugt mehrere .class Dateien AWT, Swing, JavaFX & SWT 2
K Per ComboBox Dateien einlesen AWT, Swing, JavaFX & SWT 23
G JFileChooser - erkennen v. existierenden Dateien ohne Endung AWT, Swing, JavaFX & SWT 1
I Dateien durchsuchen AWT, Swing, JavaFX & SWT 7
P Dateien per Drag&Drop ins Java-Fenster ziehen AWT, Swing, JavaFX & SWT 8
A Dateien in TextArea ausgeben AWT, Swing, JavaFX & SWT 6
G Dynamische Menüs mit Liste von MRU Dateien AWT, Swing, JavaFX & SWT 2
J Dateien einlesen AWT, Swing, JavaFX & SWT 3
E JList und Drag&Drop von Dateien AWT, Swing, JavaFX & SWT 1
H JFileChooser für alle Dateien und Directories unterhalb AWT, Swing, JavaFX & SWT 7
K SystemIcons v. Dateien & Verz. im TreeView anzeigen AWT, Swing, JavaFX & SWT 2
A JFileChooser - Mehrere Dateien per Maus markieren (nokeys) AWT, Swing, JavaFX & SWT 7
S Probleme beim Laden und Speichern von Dateien AWT, Swing, JavaFX & SWT 6
J Word/Excel-Dateien mit Button öffnen AWT, Swing, JavaFX & SWT 5
O Dateien aus Verzeichnis filtern und in JTable darstellen AWT, Swing, JavaFX & SWT 3
G JFileChooser: nur *.gif-Dateien anzeigen AWT, Swing, JavaFX & SWT 5
EagleEye GUI in mehrere Dateien aufteilen AWT, Swing, JavaFX & SWT 2
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
L JavaFX .fxml laden klappt nicht AWT, Swing, JavaFX & SWT 16
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
H Images laden nicht AWT, Swing, JavaFX & SWT 14
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
F JavaFX PNG aus einem resource Ordner laden AWT, Swing, JavaFX & SWT 8
L JavaFX LoadException beim Laden von JavaFX Anwendung AWT, Swing, JavaFX & SWT 6
F JButtons neu laden AWT, Swing, JavaFX & SWT 4
M AWT Laden von Sprites AWT, Swing, JavaFX & SWT 3
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
S JavaFX Laden des Inhalts AWT, Swing, JavaFX & SWT 1
L JavaFX Verzögerung beim Laden von Daten AWT, Swing, JavaFX & SWT 6
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
X Java Fxml laden AWT, Swing, JavaFX & SWT 4
G Properties automatisch laden AWT, Swing, JavaFX & SWT 10
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
L Graphik nach 100 ms neu laden AWT, Swing, JavaFX & SWT 1
Z JAVAFX Stage über Controller weitergeben um css-file zu laden AWT, Swing, JavaFX & SWT 4
S JavaFX Fenstergrösse automatisch Speichern und Laden AWT, Swing, JavaFX & SWT 4
M Datenbanksätze in ToolTip laden AWT, Swing, JavaFX & SWT 4
A JPanel Bild laden (Porblem mit Dateipfad) AWT, Swing, JavaFX & SWT 2
I Zufallsbilder laden AWT, Swing, JavaFX & SWT 2
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
X JFrame erst nach dem Laden sichtbar stellen AWT, Swing, JavaFX & SWT 8
N FXML Dokument laden AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben