Python实现批量修改图片大小

 更新时间:2023年07月16日 14:10:31   作者: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修改图片大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 中defaultdict()对字典进行初始化的用法介绍

    python 中defaultdict()对字典进行初始化的用法介绍

    这篇文章主要介绍了python 中defaultdict()对字典进行初始化,一般情况下,在使用字典时,先定义一个空字典(如dict_a = {}),然后往字典中添加元素只需要 dict_a[key] = value即可,本文通过实例代码介绍具体用法,需要的朋友可以参考下
    2022-07-07
  • matplotlib 三维图表绘制方法简介

    matplotlib 三维图表绘制方法简介

    这篇文章主要介绍了matplotlib 三维图表绘制方法简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python 列表,数组,矩阵两两转换tolist()的实例

    python 列表,数组,矩阵两两转换tolist()的实例

    下面小编就为大家分享一篇python 列表,数组,矩阵两两转换tolist()的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 详解如何使用Python和正则表达式处理XML表单数据

    详解如何使用Python和正则表达式处理XML表单数据

    在日常的Web开发中,处理表单数据是一个常见的任务,而XML是一种常用的数据格式,用于在不同的系统之间传递和存储数据,本文通过阐述一个技术问题并给出解答的方式,介绍如何使用Python和正则表达式处理XML表单数据,需要的朋友可以参考下
    2023-09-09
  • 使用pandas实现连续数据的离散化处理方式(分箱操作)

    使用pandas实现连续数据的离散化处理方式(分箱操作)

    今天小编就为大家分享一篇使用pandas实现连续数据的离散化处理方式(分箱操作),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • OpenCV半小时掌握基本操作之图像金字塔

    OpenCV半小时掌握基本操作之图像金字塔

    这篇文章主要介绍了OpenCV基本操作之图像金字塔,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • AI生成图片Stable Diffusion环境搭建与运行方法

    AI生成图片Stable Diffusion环境搭建与运行方法

    Stable Diffusion是一种基于扩散过程的生成模型,由Ge et al.在2021年提出,该模型利用了随机变量的稳定分布,通过递归地应用扩散过程来生成高质量的图像,这篇文章主要介绍了AI图片生成Stable Diffusion环境搭建与运行,需要的朋友可以参考下
    2023-05-05
  • Python super()函数使用及多重继承

    Python super()函数使用及多重继承

    这篇文章主要介绍了Python super()函数使用及多重继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Jupyter ipywidgets组件的使用及说明

    Jupyter ipywidgets组件的使用及说明

    这篇文章主要介绍了Jupyter ipywidgets组件的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • python调用ffmpeg命令行工具便捷操作视频示例实现过程

    python调用ffmpeg命令行工具便捷操作视频示例实现过程

    现在短视频很流行,有很多视频编辑软件,功能丰富,而我们需要的只是裁剪功能,而且需要用编程的方式调用,那么最合适的莫过于ffmpeg了
    2021-11-11

最新评论