Program w języku Python do znajdowania rozmiaru (rozdzielczości) obrazu

W tym przykładzie nauczysz się znajdować rozdzielczość obrazu jpeg.webp bez korzystania z zewnętrznych bibliotek

Aby zrozumieć ten przykład, powinieneś znać następujące tematy programowania w Pythonie:

  • Funkcje Pythona
  • Funkcje zdefiniowane przez użytkownika w Pythonie
  • We / wy pliku Python

JPEG.webp (wymawiane jako „jay-peg”) oznacza Joint Photographic Experts Group. Jest to jedna z najczęściej stosowanych technik kompresji obrazu.

Większość formatów plików ma nagłówki (początkowe kilka bajtów), które zawierają przydatne informacje o pliku.

Na przykład nagłówki jpeg.webp zawierają informacje, takie jak wysokość, szerokość, liczba kolorów (skala szarości lub RGB) itp. W tym programie znajdujemy rozdzielczość obrazu jpeg.webp odczytującego te nagłówki, bez korzystania z żadnej zewnętrznej biblioteki.

Kod źródłowy rozdzielczości wyszukiwania obrazu JPEG.webp

 def jpeg.webp_res(filename): """"This function prints the resolution of the jpeg.webp image file passed into it""" # open image for reading in binary mode with open(filename,'rb') as img_file: # height of image (in 2 bytes) is at 164th position img_file.seek(163) # read the 2 bytes a = img_file.read(2) # calculate height height = (a(0) << 8) + a(1) # next 2 bytes is width a = img_file.read(2) # calculate width width = (a(0) << 8) + a(1) print("The resolution of the image is",width,"x",height) jpeg.webp_res("img1.jpg.webp") 

Wynik

 Rozdzielczość obrazu to 280 x 280 

W tym programie otworzyliśmy obraz w trybie binarnym. Pliki inne niż tekstowe muszą być otwarte w tym trybie. Wysokość obrazu to 164 pozycja, po której następuje szerokość obrazu. Obie mają 2 bajty.

Należy zauważyć, że dotyczy to tylko standardu JPEG.webp File Interchange Format (JFIF). Jeśli obraz jest kodowany przy użyciu innego standardu (np. EXIF), kod nie będzie działał.

Konwertujemy 2 bajty na liczbę za pomocą operatora przesuwania bitowego <<. Na koniec wyświetlana jest rozdzielczość.

Interesujące artykuły...