Java bild downloaden

Die bytes, die aus dem ReadableByteChannel gelesen werden, werden auf einen FileChannel übertragen, der der Heruntergeladenen entspricht: Aber die folgenden Standard-Bildformat-Plugins: JPEG, PNG, GIF, BMP und WBMP sind immer vorhanden. Als Nächstes erstellen wir eine HTTP GET-Anforderung und registrieren einen AsyncCompletionHandler-Handler, um den heruntergeladenen Inhalt zu verarbeiten: Ein Unterschied besteht darin, dass hier die URLConnection-Klasse verwendet wird, um die Verbindungstimeouts zu steuern, damit der Download nicht für eine große Zeit blockiert wird: Die Image-I/O-Klasse bietet eine einfache Möglichkeit, Bilder in einer Vielzahl von Bildformaten im folgenden Beispiel zu speichern: Diese Lektion begann mit einer Erklärung für die Verwendung des Javax.imageio-Pakets. , um Bilder aus einem externen Bildformat in das interne BufferedImage-Format zu laden, das von Java 2D verwendet wird. Anschließend wird erläutert, wie Sie graphics.drawImage() zum Zeichnen dieses Bildes mit optionaler Filterung verwenden. Gelegentlich kann es nützlich sein, ein Bild programmgesteuert von einer URL herunterzuladen und als Datei zu speichern. Eine Standardmethode, dies in JavaSW zu tun, besteht darin, einen Eingabestream zum Lesen von einer URL zu erhalten und diesen dann in einen Ausgabestream zu schreiben, der einer Datei zugeordnet ist. Eine weitere häufige Möglichkeit, den Range-Header zu verwenden, ist das Herunterladen einer Datei in Blöcken durch Festlegen verschiedener Bytebereiche. Um beispielsweise die 2 KB-Datei herunterzuladen, können wir den Bereich 0 – 1024 und 1024 – 2048 verwenden. Da das Herunterladen einer Datei in der Regel über HTTP erfolgt, haben wir gezeigt, wie wir dies mithilfe der AsyncHttpClient-Bibliothek erreichen können. Beachten Sie, dass wir die onBodyPartReceived()-Methode überschrieben haben.

Die Standardimplementierung akkumuliert die http-Blöcke, die in einer ArrayList empfangen wurden. Dies kann zu einem hohen Speicherverbrauch oder einer OutOfMemory-Ausnahme führen, wenn Sie versuchen, eine große Datei herunterzuladen. In einem realen Szenario benötigen wir beispielsweise unseren Downloadcode, um asynchron zu sein. öffentliche statische void saveImage(String imageUrl) löst IOException aus, URL URL = neue URL(imageUrl); String fileName = url.getFile(); String destName = ”./figures” + fileName.substring(fileName.lastIndexOf(”/”)); System.out.println(destName); InputStream ist = url.openStream(); OutputStream os = neuer FileOutputStream(destName); Byte[] b = neues Byte[2048]; int Länge; while ((length = is.read(b)) != -1) é os.write(b, 0, length); os.close(); Siehe javax.imageio-Paket für weitere Informationen. Das verwendet das AWT-Bild. Sonst könnten Sie es tun: Wir haben in den obigen Beispielen gesehen, wie wir Inhalte von einer URL herunterladen können, indem wir die Java-Core-Funktionalität verwenden. Wir können auch die Funktionalität vorhandener Bibliotheken nutzen, um unsere Arbeit zu erleichtern, wenn keine Leistungsanpassungen erforderlich sind. Wenn Sie das Bild speichern möchten und seine URL kennen, können Sie dies tun: In dieser Lektion haben Sie nur die Grundlagen von Image I/O gelernt, das umfassende Unterstützung für das Schreiben von Bildern bietet, einschließlich der direkten Arbeit mit einem ImageWriter-Plug-in, um eine feinere Kontrolle über den Codierungsprozess zu erreichen.

ImageIO kann mehrere Bilder, Bildmetadaten schreiben und Kompromisse bei Qualität im Vergleich zu Größe bestimmen. Weitere Informationen finden Sie im Java Image I/O API Guide. Es lädt das Bild herunter und speichert das Bild mit dem ursprünglichen Dateinamen.

By :
Comments : 0
About the Author