文章目录

  • 利用Python实现自动批量图片格式转换
    • 0.背景
    • 1.简单思路
    • 2.进一步改进
    • 3.最终版本
    • 4.总结

利用Python实现自动批量图片格式转换

0.背景

在一个漫画网站下载了一些图片,但下载下来之后发现是webp格式,不能直接查看,于是决定将这些图片全部转为JPG等便于查看的格式,但是无论是网上的一些在线转换网站还是一些软件,要么不好使,要么要钱。于是决定利用Python写一个脚本,来实现这一功能。

1.简单思路

经过查询资料,我们得知主要需要用PIL这个对图片进行操作,即打开并识别webp格式的图片,并保存为JPG格式即可。
那么我们即可获得最初版本的代码:

from PIL import Image
for i in range(1,25):if (i<10):filename = f'0{i}.webp'else:filename = f'{i}.webp'im = Image.open(filename)if im.mode == "RGBA":im.load()  # required for png.split()background = Image.new("RGB", im.size, (255, 255, 255))background.paste(im, mask=im.split()[3]) save_name = filename.replace('webp', 'jpg')im.save('{}'.format(save_name), 'JPEG')

其中自动打开文件依赖于文件名称十分规则,而面对名称比较奇怪的就需要做进一步的修正,具体如下:

from PIL import Image
import re
for i in range(24,52):if (i<10):filename = f'0{i}_0{i-1}.webp'elif (i==10):filename = f'10_09.webp'else:filename = f'{i}_{i-1}.webp'im = Image.open(filename)if im.mode == "RGBA":im.load()  # required for png.split()background = Image.new("RGB", im.size, (255, 255, 255))background.paste(im, mask=im.split()[3]) save_name = filename.replace('webp', 'jpg')im.save('{}'.format(save_name), 'JPEG')

2.进一步改进

然后在后续的一些图片集中,出现了一些实在没有规律的名称,这是我突然意识到,我直接找所有文件的文件名,然后把不是图片的不管,是webp格式的转为JPG就好了。。。
于是就有了下面这个进阶版的脚本,可以无视图片名称,完成格式转换。

from PIL import Image
import os
files = os.listdir()
for file in files :filename = fileif(file=='.DS_Store'):continueif(file=='Untitled的副本 3.py'):continueim = Image.open(filename)if im.mode == "RGBA":im.load()  # required for png.split()background = Image.new("RGB", im.size, (255, 255, 255))background.paste(im, mask=im.split()[3]) save_name = filename.replace('webp', 'png')im.save('{}'.format(save_name), 'png')

这一阶段遇到的bug:
1.部分图片无法保存为.jpg格式,一顿操作之后也没整好,最后保存为.png格式反而就没事了。
2.苹果系统自带.DS_Store文件,需要把这个排除掉。

3.最终版本

在上一个版本用了很久之后,我又遇到了一个新问题,那就是当图片集太多时一个一个处理仍需要很多时间。于是我思考,有没有什么好的方法,可以实现一键处理包含许多图片集文件夹的方法。
经过我缜密的思考,以及查询,最后获得了这个最终版本,我还顺便做了图片格式转换完成后删除原webp格式的图片
具体如下:

from PIL import Image
import os
files = os.listdir()
for file in files :if(file=='.DS_Store'):continueif(file=='Untitled的副本3.py'):continuenow = os.path.dirname(os.path.abspath(__file__))File = os.listdir(f'{now}/{file}')#print(File)for real_file in File:filename = real_fileif(real_file=='.DS_Store'):continueif(real_file=='Untitled的副本3.py'):continue#print(filename)im = Image.open(f'{now}/{file}/{filename}')if im.mode == "RGBA":im.load()  # required for png.split()background = Image.new("RGB", im.size, (255, 255, 255))background.paste(im, mask=im.split()[3]) save_name = filename.replace('webp', 'png')#im.save('{}'.format(save_name), 'png')im.save(f'{now}/{file}/{save_name}', 'png')os.remove(f'{now}/{file}/{filename}')

这一阶段甚至没遇到什么bug,核心就是把变量名和地址搞清楚。打开路径,保存路径和删除路径不能搞错。

4.总结

首先是Python yyds!
这个自动化功能的实现主要是依赖于Python的os库和PIL库,他们的功能分别是处理系统文件和处理图片。在写这个之前AFK了Python好久,在不断改进的过程中也顺便复习了下Python的语法。记录一下,希望对自己未来和读者有所帮助。

利用Python实现自动批量图片格式转换相关推荐

  1. Python脚本—批量图片格式转换

    使用Python的os.sys.PIL库完成批量图片格式转换 import os import sys from PIL import Imageinput_folder = r'D:\Toolkit ...

  2. 如何快速批量图片格式转换呢?

    在日常工作中,我们会找到很多不同的图片格式,其中有些格式是不常用的,这些格式的兼容性较差,这样就经常需要把图片转换成常用格式,方便工作使用.有时需要批量处理图片格式转换.如果你想快速转换图像格式,可以 ...

  3. 【图片格式转换】python实现批量图片格式转换:emf、jpeg等转为png

    [图片格式转换]python批量进行图片格式转换emf.jpeg等转为png 文章目录 [图片格式转换]python批量进行图片格式转换emf.jpeg等转为png 1. 代码 2. 效果 3. 总结 ...

  4. python gif_python 将png图片格式转换生成gif动画

    先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? 这个哥们通过爬气象网站的气象雷达图,生成一个gif的动态图.非常有趣且很实用,那咱也实现下. 我们先实现一个从GIF提取帧的代码 ...

  5. 怎样把图片转换成jpg格式?如何完成批量图片格式转换?

    处理图片时,如果遇到图片格式转换(https://www.yasuotu.com/geshi)的时候该怎么办呢?尤其需要批量图片格式转化的时候,有没有比较方便又快捷的方法呢?推荐使用压缩图的图片处理工 ...

  6. python实现图片格式转换_python实现批量图片格式转换

    本文实例为大家分享了python实现批量格式转换的具体代码,供大家参考,具体内容如下 深度学习过程中总是绕不开数据集的制作,有时候实际图片格式或大小可能与需要关心的图片信息不一致,那么我们只能手动做好 ...

  7. ENVI批量图片格式转换(IDL语言实现,raw转换为tif)

    笔者最近需要将大量.raw后缀的多光谱图像转换为tif格式,然后再利用matlab对tif格式的图片进行处理. 然而,利用ENVI将.raw图片读入后,只能一张一张地将其另存为.tif格式. 笔者考虑 ...

  8. 利用Python自制一个批量图片水印添加器

    前段时间写了个比较简单的批量水印添加的python实现方式,将某个文件夹下面的图片全部添加上水印. 今天正好有时间就做了一个UI应用的封装,这样不需要知道python直接下载exe的应用程序使用即可. ...

  9. 如何批量图片格式转换_批量图片转换器免费下载

    有的时候需要做一些图片类型材料,需要将其他格式转换为JPG格式.下面我来讲解一种比较简单的方式. 首先下载软件 Leftso Image Compression 访问密码 9987 软件免费授权码申请 ...

最新文章

  1. 临床基因组学数据分析实战助力解析Case,快速发表文章
  2. OpenERP里面继承的用法
  3. DDD-EF-数据仓储
  4. ubuntu 在 rc.local 里添加了命令为什么无法执行
  5. 29-分数求模(逆元)
  6. python智能识别_Python人工智能识别文字内容(OCR)
  7. Controller 如果能保持单例,尽量使用单例
  8. 史上最全的并发编程学习
  9. 游戏设计与计算机,RPG游戏设计与实现-数学与计算机系.doc
  10. blocks bytes extents比较
  11. 让HTML播放器使用指定ua,chimee-mobile-player
  12. 星际争霸2 AI 开发探索与展望
  13. TIPTOP 智能仓库扫描系统解决方案
  14. 远程协作从“特殊”到“常态”,你可能需要的会议平板测评
  15. 渗透测试如何学习? (*╹▽╹*) 信息收集 ~ 其一
  16. 人工神经网络英文简称,人工神经网络 英文
  17. python项目案例开发pdf-python项目开发案例锦集 pdf|消费金融公司概念股
  18. GCC-PHAT算法
  19. 【ABAQUS仿真问题及解决方案整理】
  20. PCBA产业摩尔MES解决方案

热门文章

  1. 使用JMS进行消息传递
  2. PS改变图像尺寸和分辨率保存为tif图片颜色变成黑色-解决办法
  3. ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C
  4. 中外企业文化杂志中外企业文化杂志社中外企业文化编辑部2022年第5期目录
  5. 二进制如何转十进制,十进制如何转二进
  6. VIT attention实现(paddle2.2)
  7. [32期] 想学PHP来兄弟连是正确的选择 初识兄弟连三周
  8. 在iOS中进行Mapbox地图开发杂谈
  9. spring boot的启动与配置
  10. 【图像配准】SIFT图像配准【含Matlab源码 1007期】