用python写图片格式批量处理工具

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

一、思路分析

其实,照片处理要求很简单,主要是两个方面:一个是调整图片尺寸(即宽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以更加方便的操作。

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!

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

相关推荐

基于halcon的HSV颜色匹配实例

HSV颜色识别原图代码结果 原图 代码 dev_update_off () dev_close_window () *颜色数组 FuseColors := ['Orange','Red','Blue','Yellow','Green'] *画笔颜色数组 DisplayColors := ['coral','red','blue','goldenrod','forest green'] * HSV模型中H分量: Orange 10-30, Red 0-10,Blue 125-162,Yellow 3

qq_39467811的博客 3546

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

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

kimol君的博客 2万+

不止是回退SDK:深入解读UE5.2编译时那个烦人的C4756警告与INFINITY宏的变迁

本文深入解析了UE5.2源码编译时出现的C4756警告及其背后的技术原因,探讨了Windows SDK中INFINITY宏的变迁对Unreal Engine的影响。文章详细介绍了微软修改INFINITY定义的技术考量,并提供了UE5.2应对此类问题的灵活解决方案,包括通过BuildConfiguration.xml文件精确控制工具链版本,确保构建系统的可重复性和可配置性。

weixin_27180827的博客 313

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的博客 6184

基于51单片机的智能灌溉系统

基于51单片机的智能灌溉系统

jiejiezuishuai的博客 2103

Aurix TC387 Ethernet代码解析之二_移植

英飞凌官方仅提供了TC397的例程,故需通过TC397例程来移植到TC387新建工程里。TC397官方例程名称【Ethernet_1_KIT_TC397_TFT】,网络上可以免费获取到,此处不赘述。使用工具【

m0_69929716的博客 886

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

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

Ugyfyv的博客 1928

​热电偶测温电路图(一)​

高精度热电偶测温电路图 此设计概括了提供传感器诊断所必需的抗混叠滤波器和偏置电阻器。此示例还提供了一种新颖的方式,即使用ADS1118上的板载温度传感器完成对系统的冷端补偿。对于热电偶线性化,此设计还提供了一种非常简单的、可以在大多数微控制器上实施的线性算法。 缺点就是太贵。 特性 测量K型热电偶温度 精度1°C 高精度/可重复性0.2°C 包含冷端补偿 包含软件算法 使用ADS111816位ADC(带PGA) 原理图/方框图 热电偶测温电路图(二) OP07构成的高稳定热电

zxm8513优快云博客 2万+

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

Android Camera驱动开发工程师面试指南:技术深度与实战准备

摘要:上海移远通信招聘Android Camera驱动开发工程师,主要负责Camera传感器驱动开发维护、高通/展锐平台底层开发及技术预研。岗位要求1年以上嵌入式开发经验,精通Camera传感器驱动调试,熟悉高通平台Camera架构及Android HAL框架。具备HAL开发、算法集成或车载/支付行业经验者优先。工作内容以Driver/HAL开发为主,需具备硬件接口评估能力。该职位接受Linux/单片机背景人员转型。

郑伟强dev的专栏 282

【K8S系列】Kubernetes 中 Service 的流量不均匀问题【已解决】

在 Kubernetes 中,Service 是一种抽象,用于定义一组 Pod 的访问策略。当某些 Pod 接收的流量过多,而其他 Pod 的流量较少时,可能会导致负载不均衡。这种情况不仅影响性能,还可能导致某些 Pod 过载,影响应用的可用性。本文将详细分析此问题的原因及其解决方案。

颜淡慕潇 8741

重温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 1055

磁环电感参数计算

电感饱和是指当电感中的电流超过一定阈值时,电感中的磁场无法继续增加,而是达到一个饱和状态,导致电感的感应电动势减小或消失。电感通常由线圈组成,当通过线圈的电流不断增加时,线圈内部的磁场也随之增加。然而,当电流达到一定程度时,线圈的铁芯磁化达到饱和,无法进一步增加磁场强度。电感饱和的阈值取决于电感的结构、材料和尺寸等因素。通常情况下,电感的额定电流会标明其饱和电流值。一旦电感中的电流超过了饱和电流,电感将饱和并出现异常行为。当我们谈论电感饱和的时候,实际上是在谈论磁芯饱和——空心的电感永远不会饱和。

小幽余生不加糖 4036

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

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

pythonlaodi的博客 217

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

可以用python实现一些小发明_【kimol君的无聊小发明】—用python写图片格式批量处理工具...

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

weixin_42608299的博客 175

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python批量裁剪图片_用Python写了一个图片格式批量处理工具

来源:blog.youkuaiyun.com/kimol_justdo前言就在昨天,正当我在刺激战场厮杀时,“叮叮叮”,微信来消息了。我心想:“这是肾马情况?” 我打开一看,原来是小姐姐让我帮忙处理照片~乐于助人的我(小声嘀咕:“我信你个鬼,坏得很”),自然是立马放下游戏,奔向助人的前线,于是:没有错~ 面对来自小姐姐的任务,我自是当仍不让,打开美图秀秀,嗖嗖两下便搞定了,成功收获两颗小爱心❤️❤...

weixin_39940154的博客 446

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python批处理工具_用python写图片格式批量处理工具

一、思路分析其实,照片处理要求很简单,主要是两个方面:一个是调整图片尺寸(即宽x高),另一个是调整图片的大小(即压缩)。为了实现这两个功能,利用python中的PIL库即可,其安装方法如下:pip install pillow说明:PIL官方版不支持python3,不过非官方pillow可作为其替代品。导入相关的库:from PIL import Image读取图片:image = Image.o...

weixin_39622419的博客 181

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

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

weixin_39726697的博客 315

python批处理工具_—用python写图片格式批量处理工具

Tip:本文仅供学习与交流,切勿用于非法用途!!!前言前段时间微博上关于某日记的评论出现了严重的两极分化,出于好奇的我想对其中的评论以及相关用户做一个简单的分析,于是我在网上找了相关的代码,简单的修改了cookies等参数就Run起来了。既然没报错!! 我很震惊,从未若此畅快过~随后便分析起来,过了一会就发现:事情并不简单,数据是重复的!!没错,重复率如此之高,令人发指。于是,我开始了我的探索之路...

weixin_42492233的博客 159

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

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

weixin_39814378的博客 98

python实现批量图片格式转换

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

实力派,无需多言! 6812
上一篇: Python | 多线程死锁问题的巧妙解决方法
下一篇: Python 炫技操作:安装包的八种方法,你知道吗?
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值