手头有许多图片,需要对图片进行一下预处理,包括统一格式为jpg,还有统一一下分辨率。这里采用python 来进行处理。
1.统一格式
手头的图片格式有PNG和JPG的,这里统一为JPG格式的。
先贴上代码再做说明:
import os
import string
dirName = "D:\picturetool\\new_picture\\"
li=os.listdir(dirName)
for filename in li:
newname = filename
newname = newname.split(".")
if newname[-1]=="png":
newname[-1]="jpg"
newname = str.join(".",newname)
filename = dirName+filename
newname = dirName+newname
os.rename(filename,newname)
print(newname,"updated successfully")
将需要处理的图片放到一个文件夹里,然后将该文件夹的路径赋值给dirName这个变量。运行就可以了。
2.统一分辨率
先贴代码:
import os
from PIL import Image
def resize_image():
# 获取输入文件夹中的所有文件
files = os.listdir("D:\picturetool\\new_picture\\")
output_dir = "D:\picturetool\samesize_picture2\\"
# 判断输出文件夹是否存在,不存在则创建
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for file in files:
img = Image.open("D:\picturetool\\new_picture\\"+ file)
if img.mode == "P":
img = img.convert('RGB')
if img.mode == "RGBA":
img = img.convert('RGB')
img = img.resize((480, 240), Image.ANTIALIAS)
img.save(os.path.join(output_dir, file))
if __name__ == '__main__':
resize_image()
这里处理采用了PIL这个库进行处理。首先将要处理的图片放在一个文件夹,将文件夹地址赋值给一个变量。我这里是将图片放在 new_picture 这个文件夹里, 然后赋值给 file 这个变量,再将需要输出的文件夹地址赋值给另一个变量。
在调用resize这个函数前,首先要对图片模式进行统一。PIL库里图片有多种模式,先统一为RGB,不然在统一分辨率时会报错。cannot write mode P as JPEG
这部分可以参照:
https://blog.csdn.net/z704630835/article/details/84968767
统一模式后输入需要的分辨率然后进行运行即可。