Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!

Ich möchte Bilder in Java anzeigen!

Dies ist YuruFuwaFox. Ich lerne Java. Wie kann ich das Bild dieses Mal mit dem REST-Controller von Spring anzeigen? Also habe ich es implementiert, während ich verschiedene Dinge recherchiert habe, also möchte ich die Methode mit einem Memo teilen!

Hinweis

Dieser Artikel ist für Anfänger in Java gedacht. Ich bin nicht für Leute, die Tsuyotsuyo-Ingenieure sind, also würde ich Ihre Gunst schätzen. Wenn Sie es noch lesen, danke! (Es ist auch willkommen, darauf hinzuweisen, was falsch ist!)

Bilder mit REST Controller anzeigen? ?? ??

Was ist RESTController? Ich werde aus erklären. RESTController ist für die sogenannte API, die JSON oder XML als Rückgabewert zurückgibt. Ein normaler Controller gibt grundsätzlich eine Ansicht zurück, aber es ist so, als würde nur die Daten übergeben! Mit anderen Worten, wenn Sie eine Ansicht zurückgeben möchten, können Sie das Bild anscheinend einfach an die Ansicht übergeben und irgendwie anzeigen. Was sollten Sie jedoch mit einem REST-Controller tun, der JSON oder XML zurückgibt?

Übergeben Sie Daten im Binärformat

Bilder können angezeigt werden, indem sie als Binärdaten übergeben werden. Aus diesem Grund habe ich beschlossen, das Bild im Binärformat anzuzeigen.

Übergeben Sie Daten an HttpEntity, um das Bild anzuzeigen

Ich werde das Bild im Browser anzeigen. Daher werde ich HttpEntity verwenden, um ein Bild in den Antworttext einzufügen.

showImgService.java


public HttpEntity<[byte]> showImg(String image) throws IOException{
    //Holen Sie sich ein Bild
    Resource resource = resourceLoader.getResource("File:" + staticPath + imgPath);
    //Zur Bildformataufnahme
    String format;
    //Zum Speichern von Byte-Daten
    ByteArrayOutputStream bout;
    //Bild-zu-Byte-Daten
    try (InputStream img = resource.getInputStream()) {
        format = URLConnection.guessContentTypeFromStream(img);

        bout = new ByteArrayOutputStream();
        int c;
        while ((c = img.read()) != -1) {
            bout.write(c);
        }
    }
    //Byte-Daten extrahieren
    byte[] bytes = bout.toByteArray();

    //Header erstellen
    HttpHeaders headers = new HttpHeaders();
    //Speichern Sie Inhaltsinformationen in der Kopfzeile
    headers.setContentType(MediaType.valueOf(format));
    headers.setContentLength(bytes.length);
    //Übergeben Sie Byte-Daten und Header an HttpEntity und kehren Sie zurück
    return new HttpEntity<>(bytes, headers);
}

Am Ende

Es ist wirklich ein Memo, also ist es ein raues Gefühl. Sie können Bildbyte-Daten mithilfe von IOUtils tatsächlich in eine Zeile konvertieren, aber diesmal habe ich es vergessen, also sieht es so aus. Ich hoffe es hilft jemandem!

Recommended Posts

Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Grundlagen der Java-Programmierung - Ich möchte ein Dreieck mit einer for-Anweisung ① anzeigen
Ich möchte Java8 für jeden mit Index verwenden
Grundlagen der Java-Programmierung - Ich möchte ein Dreieck mit einer for-Anweisung ② anzeigen
Ich möchte den Namen des Posters des Kommentars anzeigen
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
Ich habe versucht, mit Java und Spring eine Funktion / einen Bildschirm für den Administrator einer Einkaufsseite zu erstellen
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich habe versucht, dies und das von Spring @ Transactional zu überprüfen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
[Java] Ich möchte Standardeingabe und Standardausgabe mit JUnit testen
Ich habe versucht, mit Java zu interagieren
Ich möchte JSON-Daten (Objekte) mit Ajax zwischen Java und JavaScript austauschen! ~ Frühlingsausgabe ~
Ich möchte den Ablauf der Spring-Verarbeitungsanforderungsparameter verstehen
Ich möchte Spring Local Time mit MySQL Time (auch Millisekunden) einfügen.
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Ich möchte die Standardfehlermeldung von Spring Boot steuern
Ich möchte eine asynchrone Verarbeitung und periodische Ausführung mit Rail durchführen !!!
So erzielen Sie mit Rest Template of Spring einen großen Datei-Upload
[Spring Boot] Ich möchte meine eigene Eigenschaftendatei hinzufügen und den Wert mit env.getProperty () abrufen.
Ich möchte die Methode des Controllers kennen, bei der die Ausnahme im ExceptionHandler von Spring Boot ausgelöst wurde
Nach 3 Monaten Java- und Frühlingstraining
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Ich möchte Java-Updates insgesamt stoppen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
Ich möchte mit Jakarta EE 8 mit Java 11 ein dunkles Web-SNS erstellen
Ich möchte mit der Berechtigung des Windows-Verzeichnisses von WSL (Ubuntu) herumspielen.
Ich möchte das Argument der Annotation und das Argument der aufrufenden Methode an den Aspekt übergeben
[Ruby] Ich möchte veröffentlichte Artikel in der Reihenfolge des neuesten Datums anzeigen
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Ich möchte den Feldnamen des [Java] -Felds erhalten. (Alter Ton)
[Java Spring MVC] Ich möchte DI in meiner eigenen Klasse verwenden
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Ich habe versucht, die Geschwindigkeit von Graal VM mit JMH zu messen und zu vergleichen
Geben Sie einfach Bilder mit Spring MVC ein und geben Sie sie aus
R von Java ausführen Ich möchte rJava ausführen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich möchte eine E-Mail in Java senden.
Sogar in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Javassist zweite Abkochung)
Versuchen Sie, Ruby und Java in Dapr zu integrieren
Ich habe die Eigenschaften von Java und .NET verglichen
Ich möchte den Inhalt der Absicht var_dump
rsync4j - Ich möchte rsync in Java berühren.
[Anfänger] Laden Sie Bilder und Dateien mit Spring hoch [Autark]
Ich möchte mit Firestore von Rails spielen