Python写图片格式批量处理工具!你还一张一张转格式吗?

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

前言

某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~ 当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。 于是,我决定开一个专题,便称之为kimol君的无聊小发明。 妙…啊~~~

就在昨天,正当我在刺激战场厮杀时,“叮叮叮”,微信来消息了。我心想:“这是肾马情况?” 我打开一看,原来是小姐姐让我帮忙处理照片~ 乐于助人的我(小声嘀咕:“我信你个鬼,坏得很”),自然是立马放下游戏,奔向助人的前线,于是:

原文地址:【kimol君的无聊小发明】-用python写图片格式批量处理工具_kimol君的博客-CSDN博客 如有侵权联系小编删除

没有错~ 面对来自小姐姐的任务,kimol君自是当仍不让,打开美图秀秀,嗖嗖两下便搞定了,成功收获两颗小爱心❤️❤️~

正当我沾沾自喜的时候,小姐姐又发来一个压缩包,说是同学和闺蜜的,让我帮忙一起弄一下。我打开一看:

37张照片,我能怎么办? 我也很绝望呀…

毕竟有一颗炙热助人的心(画外音:“毕竟是小姐姐让帮忙”),不可能放着不管,但总不能一张一张的调叭,看来只能写一个小工具来批量处理了。

一、思路分析

其实,照片处理要求很简单,主要是两个方面:一个是调整图片尺寸(即宽x高),另一个是调整图片的大小(即压缩)。为了实现这两个功能,利用python中的PIL库即可,其安装方法如下:

pip install pillow

说明:PIL官方版不支持python3,不过非官方pillow可作为其替代品。 导入相关的库:

from PIL import Image

读取图片:

image = Image.open('xxx.jpg')

利用resize()函数即可对图片的尺寸进行调整:

image = image.resize((width, height))

其中width和height分别为预期调整的图片宽和图片高。

利用save()函数即可对图片进行压缩,进而调整其大小:

image.save('out.jpg', quality=60)

其中quality表示压缩的比例。

二、调整尺寸

首先一个函数,用于调整图片的尺寸:

def resize(inImage, width, height, inplace=False):
    '''
    将图片调整为指定尺寸
    ----------------------------
    参数 inImage:需要处理的图片地址
    参数   width:预期图片宽度
    参数  height:预期图片高度
    参数 inplace:是否覆盖原文件
    ----------------------------
    返回 outImage:压缩后的图片地址
    '''
    if not inplace: # 如果不覆盖
        outImage = '%s-out.%s'%(inImage.split('.')[0],inImage.split('.')[1])
    else:
        outImage = inImage
    image = Image.open(inImage)
    image = image.resize((width, height))
    image.save(outImage)
    print('"%s"调整成功!(尺寸:%dx%d)'%(inImage, width, height))
    return outImage

三、调整大小

首先定义一个函数,用于获取图片的文件大小:

def get_size(fileName):
    '''
    获取图片文件的大小(KB)
    --------------------
    参数 fileName: 文件名
    --------------------
    返回 fileSize:文件的大小
    '''
    fileSize = os.path.getsize(fileName)
    fileSize /= 1024 # 将单位转为KB
    return fileSize

然后,通过不断调整压缩比率quality,来使得图片到达指定的大小,具体过程如下:

def compress(inImage, targetSize, step=5, quality=75, inplace=False):
    '''
    将图片压缩到指定的大小
    -------------------------------
    参数    inImage:需要处理的图片地址
    参数 targetSize:预期压缩的大小
    参数       step:每次迭代的压缩比
    参数    quality:初始压缩比
    参数    inplace:是否覆盖原文件
    -------------------------------
    返回 outImage:压缩后的图片地址
    '''
    if not inplace: # 如果不覆盖
        outImage = '%s-out.%s'%(inImage.split('.')[0], inImage.split('.')[1])
    else:
        outImage = inImage
    fileSize = get_size(inImage)
    while fileSize > targetSize:
        image = Image.open(inImage)
        image.save('temp.jpg', quality=quality)
        fileSize = get_size('temp.jpg')
        quality -= step # 调整压缩比
        if quality < 0:
            print('"%s"压缩失败!(请调整step)'%inImage)
            return 
    if os.path.exists('temp.jpg'):
        copyfile('temp.jpg',outImage)
        os.remove('temp.jpg') # 移处临时文件
    print('"%s"压缩成功!(大小:%.2fKB)'%(inImage, fileSize))
    return outImage

四、整合代码

将resize()和compress()两个函数整合到一起:

def adjust(inImage, width, height, targetSize, inplace=False):
    '''
    将图片调整为指定格式(包括尺寸及大小)
    -------------------------------
    参数    inImage:需要处理的图片地址
    参数      width:预期图片宽度
    参数     height:预期图片高度
    参数 targetSize:预期压缩的大小
    参数    inplace:是否覆盖原文件
    -------------------------------
    返回 outImage:调整后的图片地址
    '''
    if not inplace: # 如果不覆盖
        outImage = '%s-out.%s'%(inImage.split('.')[0],inImage.split('.')[1])
    else:
        outImage = inImage
    resize(inImage, width, height, inplace=inplace)
    compress(outImage, targetSize, inplace=True)
    return outImage

调用方法如下:

if __name__ == '__main__':
    adjust('xxx.jpg', 600, 800, 100)

随后,通过写一个循环,将压缩包里的所有图片进行处理,便得到了预期的格式。

 

写在最后

其实,这个小工具还有许多可以完善的地方,比如针对压缩方式、图片质量、效率等等都能做一些优化。此外,当然也可以考虑做一个GUI以更加方便的操作。感兴趣的小伙伴,可以试试哦,没准哪天就有小姐姐找上门了呢~😋

我是kimol君,咋们下次再会~

后记

近期有很多朋友通过私信咨询有关Python学习问题。为便于交流,点击蓝色自己加入讨论解答资源基地


 

 

图片格式 WebP、JPEG、PNG、SVG 及 在当今数字时代,图像在网页设计和应用中扮演着至关重要的角色;选择适当的图像格式直接影响着网站的加载速度、用户体验和整体性能。 阅读详情

相关推荐

Python图片格式工具深度解析[附源码】

本文介绍了一款基于PyQt5和PIL(Pillow)开发的现代化图片格式工具,支持100+种图片格式。该项目采用分层架构设计,核心功能包括智能格式换、多线程批量处理、配置管理和内存优化等。通过整合PIL、OpenCV和ImageMagick等库,实现了高性能的图像处理能力。GUI界面采用现代化设计,支持拖拽操作和实时进度监控。性能方面,优化后的工具处理1000张图片(2.5GB)时可达到60文件/秒的处理速度。文章详细解析了项目的技术架构、核心算法和优化策略,为开发者提供了构建专业级图像处理应用的技

qq_36224726的博客 862

python 批量处理图片程序

如果需要源代码,请留言 功能:自动循环访问文件夹内图片文件,获取exit信息并保存至excel,图片重命名

Python脚本—批量图片格式

使用Python的`os、sys、PIL`库完成批量图片格式

python_plus的博客 1828

【kimol君的无聊小发明】—用python图片格式批量处理工具

【kimol君的无聊小发明】—用python图片格式批量处理工具前言一、思路分析二、调整尺寸三、调整大小四、整合代码在最后 前言 某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~ 当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。 于是,我决定开一个专题,便称之为kimol君的无聊小发明。 妙…啊~~~ 就在昨天,正当我在刺激战场厮杀时,“叮叮叮”,微信来消息了。我心想:“这是肾马情况?” 我打开一看,原来是小姐姐让我帮忙

kimol君的博客 2万+

python 批量处理图片文件(做到图片不变形)

对此次项目中主要涉及到的内容做下说明: 1、需要收集大量资料(包括收集不同信息和图片); 2、资料太多需要做同样的操作处理(包括修改文件名和修改图片尺寸)。 一、修改文件名 import cv2 import os from PIL import Image import xlrd import requests import logging ''' 将图片设定为指定尺寸,并且总体图片内容不变形 设定的尺寸为:750*315 ''' # image_size_h = 315

m0_52874284的博客 6183

哄女朋友神器来了,python教你怎么把女朋友无数张图片合成一张

千图成像:用N张图片拼凑成一张图片。 实现原理:先将所要成像的图片化成马赛克图片,然后从图库中用对应颜色的图片替换相应色块。 图库中的图片处理:标记图库中每张图片的混合颜色,用于替换目标色块,并记录每张图片的特征用于成像,增加成像质量。 0,起源 很久前在刷微博的时候看到了这条,被他给震撼到了,图片是由LOL近千张皮肤图片组合构成的(难道这是用ps做的,还是一张张拼的,应该不可能吧),就在昨天突然就想起了这个事,就决定也做一个,随即便展开了行动。搜到了这篇文章,看了下图片的构成,决定先取得所有皮肤的

Ugyfyv的博客 1925

python画女朋友照片_Python中使用turtle库画与女朋友纪念日-Go语言中文社区

纪念日小礼物import turtle, timedef drawGap(): #绘制数码管间隔turtle.penup()turtle.fd(5)def drawLine(draw): #绘制单段数码管drawGap()turtle.pendown() if draw else turtle.penup()turtle.fd(40)drawGap()turtle.right(90)def d...

weixin_42391485的博客 904

重温Faster RCNN算法(1)--原理

原文:http://www.telesens.co/2018/03/11/object-detection-and-classification-using-r-cnns/ 在这篇文章中,我将详细描述VGG16 的 R-CNN(Regions with CNN features),最近引入的基于深度学习的目标检测和分类方法是如何工作的。事实证明,R-CNN在自然图像中检测和分类对象方面非常有效,其...

The space of Shining 1053

max格式obj小工具_Python图片格式批量处理工具!你还一张一张格式吗?

原标题:Python图片格式批量处理工具!你还一张一张格式吗?前言 某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。于是,我决定开一个专题,便称之为kimol君的无聊小发明。妙…啊~~~ 就在昨天,正当我在刺激战场厮杀时,“叮叮叮”,微信来消息了。我心想:...

weixin_39726697的博客 311

jpg图片base64 python_Python图片格式批量处理工具!你还一张一张格式吗?...

前言某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。于是,我决定开一个专题,便称之为kimol君的无聊小发明。妙…啊~~~就在昨天,正当我在刺激战场厮杀时,“叮叮叮”,微信来消息了。我心想:“这是肾马情况?” 我打开一看,原来是小姐姐让我帮忙处理照片~ 乐于助人的我(小声...

weixin_39814378的博客 97

新手向:自动化图片格式工具

本文介绍了一个实用的Python图片批量格式工具,使用Pillow库实现。该工具支持JPG、PNG、BMP、WebP等格式,可设置输出质量,自动处理RGB模式换。文章详细解析了代码实现,包括文件夹遍历、格式检查、换保存等核心功能,并提供了使用方法和扩展建议。该脚本适合需要统一管理图片格式或减小文件体积的场景,具有简单易用、批量处理的特点。

这个人的博客 2493

python实现批量图片格式

本文重点介绍普通图片格式怎么相互换,如jpg格式图片怎么批量化为png格式。在深度学习项目中,有时我们收集到的数据集图片格式不统一,有的代码支持多种格式图片输入,有的则只支持个别格式,所以这时,我们需要通过脚本来图片格式。不说废话,直接上代码。提示:以下是本篇文章正文内容,下面案例可供参考以上就是今天要讲的内容,脚本超级好用,学好python,大大提高工作效率!

实力派,无需多言! 6799

11.图片格式批量换器

编程基础第一期《11-30》-- 在图像处理工作中,我们经常需要将大量图片从一种格式换为另一种格式。本教程将介绍如何使用Python的Pillow库开发一个简单但功能强大的图片格式批量换器,帮助你高效处理图片格式换任务。Pillow库的基本使用文件系统操作命令行参数解析GUI界面开发批处理和异常处理图像处理基础知识物物而不物于物,念念而不念于念。

笨笨轻松熊的博客 1209

关于图片格式换(png、jpgtif)

关于图片格式换(png、jpgtif) 看来网上很多文章,图片格式换有opencv库和PIL库,由于只是简单对图像进行格式换,所以选择了PIL库(Pillow支持最新的3.x版本)进行相应的换工作。相比之下,PIL库更加方便快捷。 简介 PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python...

Soul_taker的博客 1万+

Python :AVIF 图片与其他图片格式间的批量

Python :AVIF 图片与其他图片格式间的批量

weixin_43993310的博客 1892
上一篇: Python十大装B语法!你会几种?
下一篇: 你不一定全知道的四种Python装饰器实现详解!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值