python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python修改图片大小

Python实现批量修改图片大小

作者:shaomine

在日常生活中经常有需要调整图片大小的需求,一张两张的还好,但是如果需要几十张几百张甚至几千张,就可以考虑使用Python脚本来执行了,下面小编就来和大家分享几个Python可以批量修改图片大小的脚本吧

python 批量修改图片大小

一个文件夹下面有好多图片格式是jpg大小是1920*1080,把它们处理成1280*720并按原先图片的名保存在另一路径下 这里首先要找到给定路径下所有的图片文件,然后在修改图片文件的大小,这里用到PIL和glob两个库:

# -*- coding: utf-8 -*-
  import os
  import glob
  from PIL import Image
  import os.path
  '''修改图片文件大小jpgfile:图片文件;savedir:修改后要保存的路径'''
  def convertjpg(jpgfile,savedir,width=500,height=400):
    img=Image.open(jpgfile)
    new_img=img.resize((width,height),Image.BILINEAR)
    new_img.save(os.path.join(savedir,os.path.basename(jpgfile)))
  '''查找给定路径下图片文件,并修改其大小'''
  def modifyjpgSize(file,saveDir):
    for jpgfile in glob.glob(file):
    convertjpg(jpgfile,saveDir)
  #测试代码
  file = r'D:\test2\restImage\*.jpg'
  saveDir = r'D:\test2\outImage'
  modifyjpgSize(file,saveDir)

方法补充

除了上面的方法,小编还为大家整理了几个好用的Python批量修改图片尺寸大小的方法,希望对大家有所帮助

方法一

效果图

实现

环境要求

安装python3,测试时使用的是3.11版本,具体和环境配置可以百度一下,有很多教程

该脚本需要cmd窗口执行下列语句安装相关python库

pip install Pillow

具体实现

新建一个.py的脚本

将下列代码复制进去保存后运行

import os
import sys
from PIL import Image ## 需要 pip install Pillow 安装相关插件
# 输入相关参数
isEquals = True
while isEquals:
	start_path = input("请输入图片所在目录(可包含子文件夹):")
	out_path = input("请输入图片生成目录(同名会覆盖):")
	isEquals = False
	if start_path == out_path :
		print("\n所在目录和生成目录不能为同一个!\n")
		isEquals = True
	pass
# 读取路径下所有文件
isPrint = False
for root, dirs, files in os.walk(start_path):
	#逐个读取文件
	for file in files:
		path = root + "\\" + file
		# 判断是否是图片文件
		if ".png" in path or ".jpg" in path:
			img = Image.open(path)
			print("\n原始图片分辨率(宽 * 高):" + str(img.size))
			isPrint = True
			break
	if isPrint:
		break
width = int(input("\n请输入图片宽度:"))
height = int(input("请输入图片高度:"))
print("\n所在目录: " + start_path)
print("生成目录: " + out_path)
print("目标图片宽高: " + str(width) + " * "+ str(height))
index = 0
# 读取路径下所有文件
for root, dirs, files in os.walk(start_path):
	print("\n当前路径:" + root) # 打印路径
	# 输入路径
	temp_path = out_path + root[len(start_path) : len(root)]
	#判断路径是否存在
	if not os.path.exists(temp_path):
		os.mkdir(temp_path)
	print("输出路径:" + temp_path) # 打印路径
	#逐个读取修改文件
	for file in files:
		path = root + "\\" + file
		save_path =  temp_path + "\\" + file
		# 判断是否是图片文件
		if ".png" in path or ".jpg" in path:
			img = Image.open(path)
			im_resized = img.resize((width, height))
			im_resized.save(save_path)
print("\n处理完成\n")
os.system("pause")

方法二

import os
from PIL import Image
import re
# 图像文件存储路径
Start_path='C:\\Users\\.....'
# 需要调整图片的宽度与高度
pic_width=390
pic_depth=567
# 读取路径下的图片文件
list=os.listdir(Start_path)
#print list
count=0
# 遍历图片文件名
for pic in list:
    # 单个图片的路径
    path=Start_path+pic
    # 输出文件名(含路径)
    print (path)
    # 打开图片文件 图像句柄为im
    im=Image.open(path)
    # 返回im的宽度与高度
    w,h=im.size
    # 大于宽度修改
    if w>pic_width:
        print (pic)
        print ("图片名称为"+pic+"图片被修改")
        # 按比例缩放
        h_new=pic_width*h/w
        w_new=pic_width
        count=count+1
        out = im.resize((w_new,h_new),Image.ANTIALIAS)
        new_pic=re.sub(pic[:-4],pic[:-4]+'_new',pic)
        #print new_pic
        new_path=Start_path+new_pic
        out.save(new_path)
    # 大于高度修改
    if h>pic_depth:
        print (pic)
        print ("图片名称为"+pic+"图片被修改")
        # 按比例缩放
        w=pic_depth*w/h
        h=pic_depth
        count=count+1
        out = im.resize((pic_width,pic_depth),Image.ANTIALIAS)
        new_pic=re.sub(pic[:-4],pic[:-4]+'_new',pic)
        #print new_pic
        new_path=Start_path+new_pic
        out.save(new_path)
print ('END')
count=str(count)
print ("共有"+count+"张图片尺寸被修改")

到此这篇关于Python实现批量修改图片大小的文章就介绍到这了,更多相关Python修改图片大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文