English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 예제에서는 외부 라이브러리를 사용하지 않고 jpeg 이미지의 해상도를 찾는 방법을 배웁니다.
이 예제를 이해하려면 다음을 이해해야 합니다.파이썬 프로그래밍주제:
JPEG(발음: “ jay-peg”)은 공동 이미지 그룹으로, 이미지 압축에 가장 널리 사용되는 압축 기술 중 하나입니다.
대부분의 파일 형식에는 헤더(처음 몇 바이트)가 있으며, 이 헤더에는 파일에 대한 유용한 정보가 포함됩니다.
예를 들어, jpeg 헤더에는 높이, 너비, 색상 수(그레이스케일 또는 RGB)等信息가 포함됩니다. 이 프로그램에서 우리는 이러한 헤더를 읽는 jpeg 이미지의 해상도를 찾았습니다. 외부 라이브러리를 사용하지 않습니다.
def jpeg_res(filename): """이 함수는 전달된 jpeg 이미지 파일의 해상도를 인쇄합니다.""" # 이미지 열기, 이진 모드로 읽기 with open(filename,'rb') as img_file: # 이미지 높이(비트)2바이트 단위로)在第164비트 img_file.seek(163) # 읽기2바이트 a = img_file.read(2) # 높이 계산 height = (a[0] << 8) + a[1] # 다음 두 바이트는 너비 a = img_file.read(2) # 너비 계산 width = (a[0] << 8) + a[1] print("이미지의 해상도는", width, "x", height) jpeg_res("img1.jpg")
출력 결과
이미지의 해상도는 280 x 280
이 프로그램에서 우리는 이진 모드로 이미지를 열었습니다. 비텍스트 파일은 이 모드로 열어야 합니다. 이미지의 높이는164비트, 그리고 이미지의 너비. 두 가지 모두2바이트 길이.
주의하세요, 이는 JPEG 파일 교환 형식(JFIF) 표준에만 적용됩니다. 여러분의 이미지가 다른 표준(예: EXIF)로 인코딩되었을 경우, 코드가 작동하지 않습니다.
우리는位移 연산자 <<를 사용하여2바이트를 숫자로 변환합니다. 마지막으로, 해상도를 표시합니다.