English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Enciclopedia degli esempi di Python
In questo esempio imparerai come trovare la risoluzione di un'immagine jpeg senza utilizzare librerie esterne
Per comprendere questo esempio, dovresti conoscere i seguentiProgrammazione PythonArgomento:
JPEG (pronunciato 'jay-peg') sta per Joint Photographic Experts Group. È una delle tecnologie di compressione di immagini più utilizzate.
Molti formati di file hanno un'intestazione (i primi byte), che contiene informazioni utili sul file.
Ad esempio, l'intestazione JPEG contiene altezza, larghezza, numero di colori (grigio o RGB) e altre informazioni. In questo programma, abbiamo trovato la risoluzione dei jpeg image leggendo queste intestazioni senza utilizzare alcuna libreria esterna.
def jpeg_res(filename): """Questa funzione stampa la risoluzione di un file di immagine jpeg passato come argomento""" # Apriamo l'immagine in modalità binaria per leggere with open(filename, 'rb') as img_file: # L'altezza dell'immagine (in byte di 2) si trova alla posizione 164 img_file.seek(163) # Leggi 2 byte a = img_file.read(2) # Calcolo dell'altezza height = (a[0] << 8) + a[1] # I prossimi due byte sono la larghezza a = img_file.read(2) # Calcolo della larghezza width = (a[0] << 8) + a[1] print("La risoluzione dell'immagine è", width, "x", height) jpeg_res("img1.jpg")
Risultato di output
La risoluzione dell'immagine è 280 x 280
In questo programma, abbiamo aperto l'immagine in modalità binaria. I file non testuali devono essere aperti in questa modalità. L'altezza si trova alla posizione 164, seguita dalla larghezza. Entrambi sono lunghi 2 byte.
Attenzione, questo si applica solo al formato di scambio di file JPEG (JFIF) standard. Se la tua immagine è codificata con altri standard (come EXIF), il codice non funzionerà.
Usiamo l'operatore di shift a destra bitwise << per convertire 2 byte in un numero. Infine, mostriamo la risoluzione.