English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Você aprenderá, neste exemplo, como encontrar a resolução da imagem JPEG sem usar bibliotecas externas
Para entender esse exemplo, você deve entender o seguintePythonProgramação Python
O-JPEG(pronunciado “jay
A maioria dos formatos de arquivo tem cabeçalhos (os primeiros bytes), que contêm informações úteis sobre o arquivo.
Por exemplo, o cabeçalho JPEG contém altura, largura, número de cores (grayscale ou RGB) e outras informações. Neste programa, encontramos a resolução desses cabeçalhos de imagem JPEG sem usar nenhuma biblioteca externa.
def jpeg_res(filename): """Essa função imprime a resolução da imagem de arquivo JPEG passada como parâmetro""" # Abre a imagem, em modo de leitura binário with open(filename,'rb') as img_file: # Altura da imagem (em2bytes como unidade) no164bits img_file.seek(163) # Leitura2bytes a = img_file.read(2) # Cálculo da altura height = (a[0] << 8) + a[1] # Os próximos dois bytes são a largura a = img_file.read(2) # Cálculo da largura width = (a[0] << 8) + a[1] print("A resolução da imagem é", width, "x", height) jpeg_res("img1.jpg")
Resultados de saída
A resolução da imagem é 280 x 280
Neste programa, abrimos a imagem em modo binário. Arquivos não-textuais devem ser abertos neste modo. A altura está na164bits, seguidos pela largura da imagem. Ambos são2bytes de comprimento.
Atenção, isso só é aplicável ao formato de troca de arquivos JPEG (JFIF) padrão. Se sua imagem usar outros padrões (como EXIF) para codificação, o código não funcionará.
Usamos o operador de deslocamento lógico << para2Conversão de bytes para número. Por fim, exibe a resolução.