Holen Sie sich die Größe einer Bilddatei im Web (Python3, keine zusätzliche Bibliothek erforderlich)

Wenn Sie Bilder mit einem Crawler usw. im Web sammeln, kann es vorkommen, dass Sie nur die Größe (Auflösung) des Bildes erhalten möchten, ohne die gesamte Bilddatei herunterzuladen. Wenn Sie sich also nur den Header der Datei ansehen, können Sie die gewünschten Informationen abrufen, ohne alles herunterladen zu müssen.

Unten ist der Quellcode. Ich habe den Vorgang mit Python 3.4.2 + OS X 10.10 (Yosemite) bestätigt. Es unterstützt die Formate GIF, JPEG und PNG. Zusätzliche Bibliotheken wie OpenCV sind nicht erforderlich.

import sys
import struct
import urllib.request

def parse_jpeg(res):
    while not res.closed:
        (marker, size) = struct.unpack('>2sH', res.read(4))
        if marker == b'\xff\xc0':
            (_,height,width,_) = struct.unpack('>chh10s', res.read(size-2))
            return (width,height)
        else:
            res.read(size-2)

def parse_png(res):
    (_,width,height) = struct.unpack(">14sII", res.read(22))
    return (width, height)

def parse_gif(res):
    (_,width,height) = struct.unpack("<4sHH", res.read(8))
    return (width, height)

def get_image_size(url):
    res = urllib.request.urlopen(url)
    size = (-1,-1)
    if res.status == 200:
        signature = res.read(2)
        if signature == b'\xff\xd8': #jpg
            size = parse_jpeg(res)
        elif signature == b'\x89\x50': #png
            size = parse_png(res)
        elif signature == b'\x47\x49': #gif
            size = parse_gif(res)
    res.close()
    return size

Bitte machen Sie die Fehlerbehandlung nach.

Referenzmaterial

Dark Communication Group "Dateiformat-Enzyklopädie" (ISBN4-87310-064-X)

Recommended Posts

Holen Sie sich die Größe einer Bilddatei im Web (Python3, keine zusätzliche Bibliothek erforderlich)
[Python] Ruft den Zeichencode der Datei ab
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
[Python] Ruft die Liste der ExifTags-Namen der Pillow-Bibliothek ab
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
Ermitteln Sie mit Selenium + PhantomJS + Python die Breite des Div auf der Serverseite
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
Überprüfen Sie die Existenz der Datei mit Python
Laden Sie mit Python Dateien im Web herunter
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
[Python3] Grundlegendes zu Dateivorgängen
Holen Sie sich den Inhalt von Git Diff aus Python
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
[Python] Holen Sie sich die Hauptthemen von Yahoo News
Holen Sie sich den Aufrufer einer Funktion in Python
Bildverarbeitung? Die Geschichte, Python für zu starten
[Python] Ruft das Datum der letzten Aktualisierung der Website ab
Lassen Sie Pandas die Zip-Datei im Web lesen
Zum Zeitpunkt des Python-Updates mit Ubuntu
Konvertieren Sie den Zeichencode der Datei mit Python3
[Python] Holen Sie sich den Tag (Englisch & Japanisch)
[Python + OpenCV] Malen Sie den transparenten Teil des Bildes weiß
Holen Sie sich die Tag-Suchergebnisse von Nico Nico-Videos im XML-Format. (Kein Login erforderlich)
[Python3] Machen Sie einen Screenshot einer Webseite auf dem Server und schneiden Sie sie weiter zu
Zusammenfassung der Versionen der Standard-Python-Bibliothek, die jetzt auf https vom Server validiert werden
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
So ermitteln Sie die Anzahl der Stellen in Python
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
[Python] Holen Sie sich die Zahlen im Diagramm mit OCR
Holen Sie sich das Bild von "Suzu Hirose" von Google Bildersuche.
Erstellen Sie eine Bilddatei mit PIL (Python Imaging Library).
[Python] Ruft die Liste der im Modul definierten Klassen ab
Installieren Sie die Python-Bibliothek eines Drittanbieters auf Cinema4D
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[Python] Speichern Sie das Ergebnis des Web-Scrapings der Mercari-Produktseite in Google Colab in einer Google-Tabelle und zeigen Sie auch das Produktbild an.
Holen Sie sich mit Python den Betriebsstatus von JR West
[Python] Ermittelt die Anzahl der Aufrufe aller veröffentlichten Artikel
Rufen Sie die URL des HTTP-Umleitungsziels in Python ab
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
Python> Bibliothek> Betriebssystem> os.walk ()> Verzeichnisstruktur / Implementierung abrufen, um jeden Dateipfad im angegebenen Verzeichnis abzurufen
Ein Programm, das die für iOS-App-Symbole in Python erforderliche Bildgröße automatisch ändert
der Zen von Python
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Stellen Sie die neueste Version von Python in Linux (Debian) von Chromebook
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Test.py wird auf dem Webserver in Python3 nicht angezeigt.
Sakura Die Geschichte, wie die Python-Flasche im Internet funktioniert hat
Holen Sie sich nur die Python-Version (z. B. 2.7.5) in die CentOS 7-Shell
Führen Sie die Intelligenz Ihrer eigenen Python-Bibliothek mit VScode aus.
Holen Sie sich den MIME-Typ in Python und bestimmen Sie das Dateiformat
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Sprachverarbeitung 100 Knocks-29: Holen Sie sich die URL des Flaggenbildes
(Python3) Nein. OO (Verwenden Sie die Standardbibliothek?): 5 Shader