Skip to content
damios edited this page Jan 15, 2017 · 7 revisions

Diese Seite liefert eine kurze Einführung in die Eigenheiten von Bildern in jpapi.

Zugriff auf Bilder

Alle Bilder, die mit einem bestimmten Spiel verknüpft sind, sind im Project-Objekt des Spiels als Image-Objekte gespeichert und können über die getImages()-Methode des Projekts erhalten werden. Das kann beispielsweise so aussehen:

Project spiel = Project.getAll(OrderedBy.RATING)[0];
Image[] bilder = spiel.getImages();

Image-Objekte speichern leider nicht die eigentlichen Daten des Bildes, sondern nur Meta-Informationen wie den Dateinamen, das Uploaddatum und den Ersteller. Um auf das eigentliche Bild zuzugreifen wird die ImageProvider-Klasse benötigt. Diese beinhaltet dafür verschiedene Methoden:

  • ImageProvider.get(project, image)
  • ImageProvider.get(project, image, width, height)
  • ImageProvider.get(gameid, "filename")
  • ImageProvider.get(gameid, "filename", width, height)

Angewendet auf unser Beispiel sieht das dann so aus:

ImageProvider.get(spiel, bilder[0]);

Um das Bild zu speichern, kann dann unter anderem die Java-eigene Klasse ImageIO verwendet werden:

ImageIO.write(ImageProvider.get(spiel, bilder[0]), "jpg", new File("image.jpg"));

Zusammenfassung

Abschließend hier noch der Source Code für ein funktionstüchtiges Beispiel:

public class ImageSample {

	public static void main(String... args) {
		Project spiel = null;
		try {
			spiel = Project.getAll(OrderedBy.RATING)[0];
		} catch (JsonSyntaxException | IOException e1) {
			System.out.println("Fehler beim Ausführen der Anfrage");
		}

		if (spiel != null) {
			Image[] bilder = spiel.getImages();

			if (bilder.length > 0)
				try {
					ImageIO.write(ImageProvider.get(spiel, bilder[0]),
							bilder[0].getFileName().split("\\.")[1], new File(
									bilder[0].getFileName()));
				} catch (IOException e2) {
					System.out
							.println("Fehler beim Herunterladen oder Speichern des Bildes");
				}
		}
	}

}

Clone this wiki locally