Python 미디어 info 기반 그림 파일 이름 바 꾸 기
대부분의 컬러 스크린 이 있 는 단말 기 는 핸드폰,자동차,텔레비전 등 이 든 모두 사진 의 표시 와 관련 되 어야 한다.
전문 적 인 멀티미디어 테스트 인원 으로서 우 리 는 규범 화 된 표준 이미지 테스트 파일 이 필요 하 다.
그러나 기 존의 이미지 자원 이름 은 매우 자 유 롭 게 명명 되 었 다.예 를 들 어 IMG20200325_161111.jpg,
이상 의 이름 은 이미지 파일 의 구체 적 인 이미지 인 코딩 형식,해상도 등 정 보 를 볼 수 없습니다.
테스트 매니저 는 나 에 게 대량으로 이름 을 바 꾸 라 고 요구 했다.템 플 릿 은 다음 과 같다.
이미지 인 코딩 형식해상도비트 깊이용기
JPEG_1920x1080_32bit_jpg.jpg
이미지 코딩 기본 지식
사진 인 코딩:특정한 풍경 화면 을 사진 데이터 파일 로 바 꾸 는 과정 에서 촬영 은 반드시 촬영 의 범위 와 관련된다.
그림 디 코딩:그림 데이터 파일 을 화면 에 표시 하 는 과정.
주로 다음 과 같은 기술 파라미터 와 관련된다.
사진 기술 파라미터
매개 변수 해석
예 를 들다
이미지 인 코딩 형식
(압축 기술)
픽 셀 압축 기술
다른 인 코딩 형식,
그 압축 률 은 압축 효과 와 다르다.
JPEG, PNG, GIF, BMP, Webp, RAW, Heic
이미지 해상도
(단위:Pixel)
그림 의 긴 픽 셀 수*그림 의 넓 은 픽 셀 수
4096×2160(4K), 1920x1080,
1280x720,720×480,
640 x480,320 x480 등
심지어 10 억 화소 의 그림 까지 존재 한다.
비트 깊이
(단위:bit)
픽 셀 마다 포 함 된 데이터 크기
8bit, 16bit, 32bit
그림 용기
파일 접미사
.jpg; .png; .gif; .bmp; .heic; .webp 등
우리 가 만난 모든 그림 파일 은 데이터 의 집합 이다.
일반적인 데이터 가 클 수록 그 그림 은 더욱 뚜렷 하 다.
준비 단계
+---Input_Image #
| 1.jpg
| 2.png
|
+---Output_Image #
| JPEG_1920x1080_32bit_jpg.jpg
| PNG_1280x720_32bit_png.png
|
\image_info.py # info ,
\rename_image.py # image_info.py ,
정의 imageinfo.py 모듈비교적 복잡 한 코드 와 관련 되 기 때문에 대상 류 를 대상 으로 하 는 프로 그래 밍 방식 으로 직접 실현 하 는 것 을 권장 합 니 다.
# coding=utf-8
import os
import re
import subprocess
class ImageInfoGetter():
''' Formate, , '''
def __init__(self, image_file):
''' , mediainfo '''
if os.path.exists(image_file):
self.image_file = image_file
p_obj = subprocess.Popen('mediainfo "%s"' % self.image_file, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
self.info = p_obj.stdout.read().decode("utf-8") #
else:
raise FileNotFoundError("Not this File!") # ,
def get_image_format(self):
''' , JPEG, PNG, BMP '''
try:
image_codec = re.findall(r"Format\s+:\s(.*)", self.info)[-1] # Format
image_codec = image_codec.strip() #
if image_codec == "RGB":
image_codec = "BMP"
except:
image_codec = "undef" #
return image_codec
def get_image_resolution(self):
''' '''
try:
image_widget = re.findall(r'Width\s+:\s(.*)pixels', self.info)[-1]
image_widget = image_widget.replace(" ", "")
image_height = re.findall(r'Height\s+:\s(.*)pixels', self.info)[-1]
image_height = image_height.replace(" ", "")
image_resolution = image_widget + "x" + image_height
except:
image_resolution = "undef" #
return image_resolution
def get_image_bit_depth(self):
''' '''
try:
image_bit_depth = re.findall(r"Bit depth\s+:\s(.*bit)s", self.info)[-1].strip()
image_bit_depth = image_bit_depth.replace(" ", "") #
except:
image_bit_depth = "undef" #
return image_bit_depth
def get_image_container(self):
''' , '''
_, image_container = os.path.splitext(self.image_file)
if not image_container:
raise NameError("This file no extension")
image_container = image_container.replace(".", "")
image_container = image_container.lower() #
return image_container
if __name__ == '__main__':
# , , '''
i_obj = ImageInfoGetter("C:\\img.jpg")
image_format = i_obj.get_image_format()
print(image_format)
image_resolution = i_obj.get_image_resolution()
print(image_resolution)
image_bit_depth = i_obj.get_image_bit_depth()
print(image_bit_depth)
image_container = i_obj.get_image_container()
print(image_container)
이미지 호출info.py 모듈 및 대량 이름 바 꾸 기
# coding=utf-8
import os
import image_info
from shutil import copyfile
curdir = os.getcwd()
# ,
input_image_path = os.path.join(curdir, "Input_Image")
filelist = os.listdir(input_image_path) #
# ,
output_image_path = os.path.join(curdir, "Output_Image")
# Output_Image ,
if not os.path.exists(output_image_path):
os.mkdir(output_image_path)
if filelist: #
for i in filelist: #
# , , '''
image_file = os.path.join(input_image_path, i)
i_obj = image_info.ImageInfoGetter(image_file)
image_format = i_obj.get_image_format()
image_resolution = i_obj.get_image_resolution()
image_bit_depth = i_obj.get_image_bit_depth()
image_container = i_obj.get_image_container()
new_image_name = image_format + "_" + image_resolution + "_" + image_bit_depth + "_" \
+ image_container + "." + image_container
print(new_image_name)
new_image_file = os.path.join(output_image_path, new_image_name)
copyfile(image_file, new_image_file) #
else:
print("It's a Empty folder, please input the image files which need to be renamed firstly!!!")
os.system("pause")
본 사례 연습 소재 다운로드포함:미디어 info.exe(환경 변수 에 버 리 는 것 을 권장 합 니 다),
각종 인 코딩 형식의 그림 파일,imageinfo.py 모듈,이름 바 꾸 기image.py 일괄 처리 스 크 립 트
주문 하 다
실행 효 과 는 다음 과 같 습 니 다:
이상 에서 알 수 있 듯 이 입 출력 파일 구조의 장점 은 저 는 서로 다른 이름 의 다른 문자 만 필요 합 니 다.
이름 을 바 꿀 그림 을 Input 에 잃 어 버 립 니 다.Image 폴 더 에서 프로그램 스 크 립 트 를 실행 한 후 Output 보기이미지 출력 파일,
스 크 립 트 의 운행 이 정상 적 인지,건장 성(잘못 사용)이 요구 에 부합 되 는 지 테스트 하여 이 프로그램 스 크 립 트 에 대해'회색 박스 테스트'를 실현 할 수 있 습 니 다.
팁:
예 를 들 어 안 드 로 이 드 폰,구 글 이 출시 했다CDD(Compatibiltiy Definition Document 호환성 정의 문서),.
그 다섯 번 째 부분 은 많은 그림 디 코딩 형식의 규정 과 관련된다.
이것 이 바로 안 드 로 이 드 의 가장 주요 한 이미지 멀티미디어 디 코딩 테스트 수요 이다.
이상 은 Python 이 미디어 info 를 기반 으로 그림 파일 의 이름 을 대량으로 바 꾸 는 상세 한 내용 입 니 다.python 의 이름 을 대량으로 바 꾸 는 파일 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.