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 虚拟空间的使用代码详解

    Python 虚拟空间的使用代码详解

    这篇文章主要介绍了Python 虚拟空间的使用,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 使用keras实现孪生网络中的权值共享教程

    使用keras实现孪生网络中的权值共享教程

    这篇文章主要介绍了使用keras实现孪生网络中的权值共享教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python列表插入append(), extend(), insert()用法详解

    python列表插入append(), extend(), insert()用法详解

    在本篇文章里小编给大家整理了关于python列表插入append(), extend(), insert()用法以及相关知识点,有需要的朋友们参考下。
    2019-09-09
  • Python迭代用法实例教程

    Python迭代用法实例教程

    这篇文章主要介绍了Python迭代用法,包括了迭代的定义及具体用法,是一个非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • python常见模块与用法

    python常见模块与用法

    这篇文章主要介绍了python常见模块与用法,文中有非常详细的代码示例,对正在学习python的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-04-04
  • python人工智能tensorflow构建卷积神经网络CNN

    python人工智能tensorflow构建卷积神经网络CNN

    学习神经网络已经有一段时间,从普通的BP神经网络到LSTM长短期记忆网络都有一定的了解,但是从未系统的把整个神经网络的结构记录下来,我相信这些小记录可以帮助我更加深刻的理解神经网络
    2022-05-05
  • Python自动化办公之读取Excel数据的实现

    Python自动化办公之读取Excel数据的实现

    这篇文章主要为大家详细介绍了如何通过Python实现Excel数据的读取,文中的示例代码讲解详细,对我们学习有一定帮助,需要的可以参考一下
    2022-05-05
  • 举例讲解Python中的迭代器、生成器与列表解析用法

    举例讲解Python中的迭代器、生成器与列表解析用法

    这篇文章主要介绍了Python中的迭代器、生成器与列表解析用法,还对Python3.x版本中的一些改变作出了提示,需要的朋友可以参考下
    2016-03-03
  • Python图像处理库处理步骤

    Python图像处理库处理步骤

    这篇文章主要介绍了Python图像处理探索之Python图像处理库,我们将学习使用不同的 Python 库实现一些常见的图像处理、变换和可视化技术,这些技术通常可以用作更复杂的图像处理任务的基本预处理/后处理步骤,需要的朋友可以参考下
    2023-04-04
  • Python利用keyboard模块实现键盘记录操作

    Python利用keyboard模块实现键盘记录操作

    模拟键盘操作执行自动化任务,我们常用的有pyautowin等自动化操作模块。今天介绍的这个模块叫做keyboard,它是纯Python原生开发,编译时完全不需要依赖C语言模块。一行命令就能完成安装,非常方便,需要的可以了解一下
    2022-10-10

最新评论