Pillow教程09:图片格式(png,jpg,ico等)批量转换+批量修改图片尺寸

---------------Pillow教程集合---------------

Python项目18:使用Pillow模块,随机生成4位数的图片验证码

Python教程93:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)

Pillow教程02:图片的裁剪+复制粘贴+旋转角度+翻转+降噪滤镜(平滑、锐化、边缘检测)

Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩

Pillow教程04:学习Draw绘制+Font字体+alpha composite方法,给图片添加文字水印

Pillow教程05:NumPy数组和PIL图像的相互转化

Pillow教程06:将图片中出现的黄色和红色,改成绿色

Pillow教程07:批量将png图片,合成GIF动态图

Pillow教程08:调整图片的亮度+对比度+色彩+锐度

1.图片的格式多种多样,常见的有bmp、jpg、png、gif、tiff、psd、ai、webp、eps、svg、cdr、pcd、dxf、raw等。这些格式各有特点,适用于不同的场景和需求。
bmp:是一种与硬件设备无关的图像文件格式,使用非常广泛。它支持1-24bit色彩,无损保存图像每个像素的信息,因此文件通常比较大。
jpg(或jpeg):是一种常见的、有损压缩的图像格式,被广泛用于数字照片的存储和传输。通过去除图像中一些肉眼不易察觉的数据以节省存储空间。
png:是一种无损压缩格式,支持24bit色彩,压缩不失真并支持透明背景和变显图像。PNG格式图像文件消除图像文件的锯齿边缘效应,可以得到平滑的边缘图像。
ICO (Icon) 是一种用于图标文件的格式,通常用于存储应用程序图标、文件夹、文件等在图形用户界面(GUI)中的小图像。这些图标通常很小,以便在工具栏、菜单或其他用户界面元素中快速显示。
gif:是一种动画和简单的短视频格式,只支持256色,通常用于网页和社交媒体上的动画图像。同时支持透明背景和动画。
tiff:是一种高质量的无损压缩格式,通常用于印刷和出版行业。它支持多种色彩模式,包括RGB、CMYK等,并且具有灵活的标签功能,可以存储大量与图像相关的信息。
raw:是数码相机拍摄照片时最常用的格式之一,它是一种未经压缩的图像格式,保留了相机捕捉的所有信息。需要专门的软件进行处理和转换才能成为常见的图片格式。
webp:是Google开发的一种同时提供了有损压缩与无损压缩的图片文件格式,派生自图像编码格式VP8。
2.使用Pillow图像格式的读取、处理和保存,来实现JPG、PNG、ICO和BMP等格式互转。另外,保存图像时指定格式参数(如’JPEG’、‘PNG’)是很重要的,因为Pillow会根据这个参数来决定如何编码图像数据。如果不指定格式,Pillow会尝试根据文件扩展名来猜测格式,但这并不总是可靠的。
在这里插入图片描述

from PIL import Image

# 1.JPG转PNG
def jpg_to_png():
    # 1.打开JPG图像
    jpg_image = Image.open('input.jpg')
    # 2.保存为PNG格式
    jpg_image.save('output.png', 'PNG')

# 2.PNG转JPG
def png_to_jpg():
    png_image = Image.open('input.png')
    png_image.save('output.jpg', 'JPEG')

# 3.PNG转BMP
def png_to_bmp():
    png_image = Image.open('input.png')
    png_image.save('output.bmp', 'BMP')

# 4.PNG转ICO
def png_to_ico():
    png_image = Image.open('input.png')
    png_image.save('output.ico', 'ICO', sizes=[(32, 32)])

如果你想批量转换指定的图片格式,可以试试以下代码。os.path.splitext() 是os.path模块中的一个函数,用于将文件路径拆分为文件名和扩展名两部分。这个函数返回一个元组,第一个元素是文件名(不包含扩展名),第二个元素是扩展名(包含点号 .)。

# @Author : 小红牛
# 微信公众号:WdPython
from PIL import Image
import os

# 1.设置输入和输出文件夹路径
input_folder = '素材图片'
output_folder = 'output_images'

# 2.如果输出文件夹不存在,则创建它
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 3.设置输出图片格式和品质(可选,对于JPEG格式)
output_format = 'JPEG'
quality = 90  # 0 (最差质量, 最小文件大小) 到 100 (最佳质量, 最大文件大小)

# 4.遍历输入文件夹中的所有文件
for filename in os.listdir(input_folder):
    # 检查文件扩展名,确保只处理图片文件
    if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
        # 5.拼接完整的输入和输出文件路径
        input_path = os.path.join(input_folder, filename)
        base_name, ext = os.path.splitext(filename)
        output_path = os.path.join(output_folder, base_name + '.' + output_format.lower())
        print(output_path)
        # 6.打开图片并保存为新的格式
        with Image.open(input_path) as img:
            img.save(output_path, output_format, quality=quality)

print(f'转换完成,图片已保存到 {output_folder}')

3.可以使用Image.resize()方法来调整单张图片的尺寸。如果你想批量修改多个图片的尺寸,你需要写一个循环来遍历所有的图片,并对每张图片调用resize()方法。

导入必要的模块。
设置目标尺寸,即你希望图片调整到的尺寸。
指定包含图片的文件夹路径。
使用os.listdir()遍历文件夹中的所有文件。
检查每个文件是否以常见的图片扩展名结尾(.png, .jpg, .jpeg, .bmp, .gif)。
对于每个图片文件,打开它,使用resize()方法调整其尺寸,并保存到一个新的文件夹中。

# @Author : 小红牛
# 微信公众号:WdPython
import os
from PIL import Image

# 0.把修改后的图片放到output里面(如果不存在则创建)
output_folder = 'output_images'
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 1.设置目标尺寸
target_size = (800, 600)  # 新的宽度和高度

# 图片所在的文件夹路径
input_folder = '素材图片'

# 2.遍历文件夹中的所有文件
for filename in os.listdir(input_folder):
    print(filename)
    # 确保只处理图片文件
    if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
        # 3.拼接完整的文件路径
        input_path = os.path.join(input_folder, filename)
        # 打开图片
        img = Image.open(input_path)
        # 4.调整图片尺寸
        resized_img = img.resize(target_size, Image.BICUBIC)
        # 拼接输出文件的完整路径
        output_path = os.path.join(output_folder, filename)
        # 5.保存调整尺寸后的图片
        resized_img.save(output_path)

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame 图像处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/523324.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PLM系统同步到SAP修改、停用BOM数据

MATNR 1 类型 MATNR CHAR 40 0 0 物料编号 WERKS 1 类型 WERKS_D CHAR 4 0 0 工厂 STLAN 1 类型 STLAN CHAR 1 0 0 物料清单用途 STLAL 1 类型 STLAL CHAR 2 0 0 备选物料清单 AENNR …

2024.4.7作业

//登陆界面 this->setWindowTitle("传奇霸业"); this->setWindowIcon(QIcon("C:\\Users\\l1693\\Desktop\\pictures\\1.png")); this->resize(400,300); this->setFixedSize(400,300); //登录界面修饰 //底图 QLabel *lab5 new QLabel(this);…

深入理解数据结构第三弹——二叉树(3)——二叉树的基本结构与操作

二叉树(1):深入理解数据结构第一弹——二叉树(1)——堆-CSDN博客 二叉树(2):深入理解数据结构第二弹——二叉树(2)——堆排序及其时间复杂度-CSDN博客 前言…

前端学习之DOM编程案例:全选反选案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>全选反选</title> </head> <body><input type"checkbox" id"all">全选<ul><li><…

File,IO流,递归详解

File类 介绍 java.io.File类是Java语言提供了用来描述文件和目录(文件夹)的 构造 方法 注意&#xff1a; 构造方法中通常用的是第一个方法文件和目录可以通过File封装成对象File封装的对象仅仅是一个路径名&#xff0c;它是可以存在的&#xff0c;也可以不存在 绝对路径…

linux 安装JDK

一、安装jdk mkdir -p /export/servers # 软件安装的目录 0 . 使用rpm -qa | grep java 查看是否已经安装了jdk 使用: rpm -e --nodeps 软件的名称 将jdk进行卸载 执行完成后, 查看是否全部删除: 需要解压jdk的压缩包 tar -zxvf jdk-8u144-linux-x64.tar.gz -C /export/s…

Tcl学习笔记(二)——表达式、字符串

目录 1. 表达式 算数操作符 关系操作符 逻辑操作符 按位操作符 选择操作符 数学函数 字符串操作 2. 字符串 字符串长度、大小写转换、裁剪、重复 字符串类型 字符的获取 字符串的添加、删除、替换 字符串的比较 字符串的简单搜索 字符串的匹配 格式化…

计算机网络 实验指导 实验9

实验9 三层交换机综合实验 1.实验拓扑图 名称相连的接口IP地址网关PC1F0/3172.1.1.2/28172.1.1.1/28PC2F0/4172.1.1.18/28172.1.1.17/28PC3F0/5172.1.1.34/28172.1.1.33/28PC4F0/3172.1.1.3/28172.1.1.1/28PC5F0/4172.1.1.19/28172.1.1.17/28PC6F0/5172.1.1.35/28172.1.1.33/2…

学习天机04(优惠劵)

1.使用Redis和Mq优化领取优惠卷的高并发操作 实现思路&#xff1a; 因为领取优惠券的操作&#xff0c;涉及到操作db的操作很多&#xff0c;比如说查询优惠卷&#xff0c;统计已经领取的数量&#xff0c;更新已经发放的数量和新增用户券。所以了防止在高并发的情况下对我们的数…

如何查询大数据信用报告?查询时需要注意的事项有哪些?

在数字化时代&#xff0c;大数据信用评分对于需要资金周转的个人或企业来说至关重要。许多机构在贷款审批过程中使用大数据信用评分作为风险控制的重要手段。因此&#xff0c;了解自己的大数据信用状况成为了常规操作。本文将详细介绍如何查询大数据信用报告以及查询时需要注意…

物联网实战--入门篇之(十一)安卓QT--前端开发

目录 一、设计思路 二、QML文件结构 三、顶部框 四、中心圆圈 五、泡泡 六、开关栏 七、调速栏 八、安卓编译 一、设计思路 还是再贴一下米家APP的截图&#xff0c;再根据我们之前第九篇的分析&#xff0c;大概可以得出设计思路了。首先一个根页面当底版&#xff0c;然…

SpringBoot属性配置的多种方式

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot属性配置的多种方式 📚个人知识库: Leo知识库,欢迎大家访问 目录 …

突破编程_前端_SVG(概述)

1 什么是 SVG SVG&#xff0c;全称可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff09;&#xff0c;是一种基于 XML&#xff08;可扩展标记语言&#xff09;的矢量图像格式。这种图像格式的主要特点是它描述的是矢量图形&#xff0c;而不是基于像素的位图图像。因…

接口和抽象类的综合案例

题目要求&#xff1a; 代码框架&#xff1a; 代码实现&#xff1a; person类&#xff1a; package www.jsu.com;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name name;this.age age;}public …

【第十二篇】使用BurpSuite实现CSRF(实战案例)

CSRF存在前提:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的 业务场景:新增、删除、收藏、编辑、保存使用Burp发现CSRF漏洞的过程如下。 1、如图,存在修改邮箱的功能点如下: 2、修改邮箱的流量包,此时邮箱已被修改: 思路:是…

Labview如何0基础自学快速入门?(纯干货帖)

大家好&#xff0c;首先声明&#xff1a;本文纯干货&#xff0c;单纯为了帮助大家快速入门。有用的话大家点赞评论加关注即可。谢谢大家 题主是从一个毫无编程基础的Labview小白到现在能独立承担软件开发项目的工程师&#xff0c;作为瑞文的老玩家&#xff0c;题主觉得&#xf…

Git场景运用

git 脚本在开发中应用场景-CSDN博客 Git基础 Git基本运作流程 ​​​​​​​ (1) workspace->index->Repository ​ 本地写代码在workspace&#xff0c;add暂存到index&#xff0c;commit提交到本地Repository。多项目成员&#xff0c;每员对应本地仓库&#xff0c;各自…

uniapp-设置UrlSchemes从外部浏览器H5打开app

需求&#xff1a;外部浏览器H5页面&#xff0c;跳转到uniapp开发的原生app内部。 1、uniapp内部的配置&#xff1a; &#xff08;1&#xff09;打开manifest->App常用其他设置&#xff0c;如下&#xff0c;按照提示输入您要设置的urlSchemes&#xff1a; &#xff08;2&am…

pom.xml文件中的标签认识

周末不卷&#xff0c;研究下pom.xml里的内容。 一般一个pom.xml文件外面一个project包着以下的标签&#xff1a; groupId artifactId repositories properties dependencies build plugins 下面分别来说说这几个标签的含义&#xff1a; 1、groupId&#xff1a;表示项目组的id…

MSOLSpray:一款针对微软在线账号(AzureO365)的密码喷射与安全测试工具

关于MSOLSpray MSOLSpray是一款针对微软在线账号&#xff08;Azure/O365&#xff09;的密码喷射与安全测试工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以直接对目标账户执行安全检测。支持检测的内容包括目标账号凭证是否有效、账号是否启用了MFA、租户账号是…