我们在采集内容的时候,经常会遇到图片很大,为了不占用我们自己的服务器空间与宽带,最好的办法就是压缩一下图片的大小与尺寸。一般情况下,压缩一下大小即可。那么使用python代码如何实现了,下面小编就将实现代码分享出来。
from PIL import Image import os def img_width_height(): file_path = r"E:\采集图片\szhuodong\20230727" # 原始图像路径 raw_files = os.walk(file_path) # 遍历所有图像 # width, height = 224, 224 # 修改后的图像尺寸大小 save_path = r"E:\采集图片\szhuodong2\20230727" # 修改后图像存储的路径 if not os.path.exists(save_path): # 如果没有这个文件夹,就新建 os.makedirs(save_path) for root, dirs, files in raw_files: for file in files: # 展现各文件 picture_path = os.path.join(root, file) # 得到图像的绝对路径 pic_org = Image.open(picture_path) # 打开图像 width=int(pic_org.width) height=int(pic_org.height) pic_new = pic_org.resize((width, height), Image.ANTIALIAS) # 图像尺寸修改 _, sub_folder = os.path.split(root) # 得到子文件夹名字 pic_new_path = os.path.join(save_path, sub_folder) if not os.path.exists(pic_new_path): os.makedirs(pic_new_path) # 建立子文件夹 pic_new_path = os.path.join(pic_new_path, file) # 新图像存储绝对路径 if pic_new.mode == "RGBA":pic_new = pic_new.convert('RGB') if pic_new.mode=='P':pic_new_path =pic_new_path.replace('.jpg', '.png') pic_new.save(pic_new_path) # 存储文件 print("%s have been resized!" % pic_new_path) img_width_height()
width,height是我们预先设置好的压缩后的图片尺寸,如果我们需要等比例压缩,我们可以使用
width=int(pic_org.width) height=int(pic_org.height)
上面是1:1压缩图片,即不会改变图片尺寸,单纯压缩大小。等比例压缩可以使用如下代码:
width=int(pic_org.width/3*2) height=int(pic_org.height/3*2)
上面的代码意思就是长宽等比压缩成原来的3分之2
评论