English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Beispiel lernen Sie, wie Sie die Auflösung eines JPEG-Bildes finden können, ohne eine externe Bibliothek zu verwenden.
Um diesen Beispiel zu verstehen, sollten Sie die folgenden verstehenPython-ProgrammierungPython-Programmierung
O-JPEG (ausgesprochen "Jay
Die meisten Dateiformate haben Header (die ersten paar Bytes), die nützliche Informationen über die Datei enthalten.
Zum Beispiel enthält der JPEG-Kopf Höhe, Breite, Anzahl der Farben (Graustufen oder RGB) und andere Informationen. In diesem Programm haben wir die Auflösung dieser Header gelesen, ohne eine externe Bibliothek zu verwenden.
def jpeg_res(filename): """Diese Funktion gibt die Auflösung eines übergebenen JPEG-Bilddateiformats aus.""" # Öffnen des Bildes im Binärbetrieb lesen with open(filename,'rb') as img_file: # Bildhöhe (in2Bytes als Einheit) im164Bits img_file.seek(163) # Lesen2Bytes a = img_file.read(2) # Berechnung der Höhe height = (a[0] << 8) + a[1] # Die nächsten zwei Bytes sind die Breite a = img_file.read(2) # Berechnung der Breite width = (a[0] << 8) + a[1] print("Die Auflösung des Bildes beträgt", width, "x", height) jpeg_res("img1.jpg")
Ausgabeergebnis
Die Auflösung des Bildes beträgt 280 x 280
In diesem Programm haben wir das Bild im Binärbetrieb geöffnet. Nicht-textbasierte Dateien müssen in diesem Modus geöffnet werden. Die Höhe des Bildes befindet sich in der164Bits, gefolgt von der Breite des Bildes. Beide sind2Bytes lang.
Beachten Sie, dass dies nur für das JPEG-Dateiaustauschformat (JFIF)-Standard gilt. Wenn Ihr Bild mit anderen Standards (wie EXIF) codiert wird, funktioniert der Code nicht.
Wir verwenden den位移位算子 <<, um2von Bytes in eine Zahl konvertiert. Schließlich wird die Auflösung angezeigt.