Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 이미지 유형을 결정하시겠습니까?

<시간/>

이 섹션에서는 우리가 가지고 있는 이미지 파일의 유형을 볼 것입니다. 따라서 디렉토리에 수백 개의 이미지 파일이 있고 모든 jgeg(또는 특정 이미지 파일 유형) 파일 유형을 가져오려는 상황을 고려하십시오. 이 모든 것은 파이썬을 사용하여 프로그래밍 방식으로 수행할 것입니다.

이미지 유형을 결정하는 Python 제공 라이브러리는 이러한 라이브러리에서 imghdr입니다.

python imghdr 패키지는 파일 또는 바이트 스트림에 포함된 이미지 유형을 결정합니다.

설치

python 3.6 이상을 사용하는 경우 imghdr 모듈이 표준 패키지이며 python 설치와 함께 제공될 가능성이 매우 높습니다.

시스템에 imghdr을 설치하려면 명령 터미널에서 아래 명령을 실행하기만 하면 됩니다.

pip install imghdr

성공적으로 설치한 후 imghdr이 제대로 설치되었는지 확인하려면 파이썬 셸에서 모듈을 가져오지 마십시오.

>>> import imghdr
>>>

오류가 발생하지 않는 경우 imghdr이 컴퓨터에 설치되어 있음을 의미합니다.

구문

imghdr 패키지는 다음 기능을 정의합니다.

imghdr.what(filename[, h])

어디

  • 파일 이름 :filename으로 명명된 파일에 포함된 이미지 데이터를 테스트하고 이미지 유형을 설명하는 문자열을 반환합니다.

  • :선택 사항입니다. h가 있는 경우 파일 이름은 무시되고 h는 테스트할 바이트 스트림을 포함하는 것으로 간주됩니다.

다음은 imghdr 패키지를 사용하여 인식할 수 있는 허용된 이미지 유형입니다.


이미지 형식
'rgb'
SGI ImgLib 파일
'gif'
GIF 87a 및 89a 파일
'pbm'
휴대용 비트맵 파일
'페이지'
휴대용 그레이맵 파일
'ppm'
휴대용 Pixmap 파일
'tiff'
TIFF 파일
'라스트'
태양 래스터 파일
'xbm'
X 비트맵 파일
'jpeg'
JFIF 또는 Exif 형식의 JPEG 데이터
'bmp'
BMP 파일
'png'
휴대용 네트워크 그래픽

그러나 imghdr 패키지가 인식할 수 있는 파일 유형 목록을 이 변수에 추가하여 확장할 수 있습니다.

imghdr.tests

이 함수에는 개별 테스트를 수행하는 함수 목록이 포함되어 있습니다. 각 함수는 바이트 스트림과 열린 파일류 객체라는 두 가지 인수를 취합니다. 그러나 바이트 스트림으로 what()을 호출하면 파일류 객체는 None이 됩니다.

테스트 함수는 이미지 유형을 문자열로 반환합니다. else None(실패하면 없음).

>>> import imghdr
>>> imghdr.what('clock.jpg')
'jpeg'

다음은 특정 이미지 파일 확장자가 있는 경우 특정 작업을 수행하는 imghdr 패키지의 한 구현입니다.

def identify_filetype(url, imageName, folderName):
   session = _setupSession()
   try:
      # time out is another parameter tuned
      image = session.get(url, timeout = 5)
      with open(os.path.join(folderName, imageName),'wb') as fout:
      fout.write(image.content)
      fileExtension = imghdr.what(os.path.join(folderName, imageName))
      if fileExtension is None:
         os.remove(os.path.join(folderName, imageName))
      else:
         newName = imageName + '.' + str(fileExtension)
         os.rename(os.path.join(folderName, imageName), os.path.join(folderName, newName))
except Exception as e:
print ("failed to download one pages with url of " + str(url))