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

news2024/12/29 9:22:01

---------------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 图像处理

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

场景文本检测识别学习 day02(AlexNet论文阅读、ResNet论文精读)

怎么读论文 在第一遍阅读的时候,只需要看题目,摘要和结论,先看题目是不是跟我的方向有关,看摘要是不是用到了我感兴趣的方法,看结论他是怎么解决摘要中提出的问题,或者怎么实现摘要中的方法,然…

华为机试题

目录 第一章、HJ1计算字符串最后一个单词的长度,单词以空格隔开。1.1)描述1.2)解题第二章、算法题HJ2 计算某字符出现次数1.1)题目描述1.2)解题思路与答案第三章、算法题HJ3 明明的随机数1.1)题目描述1.2&a…

C++——优先级队列

前言:这篇文章我们继续来分享一个c的容器——优先级队列。 一.理解优先级 何为优先级一说?实际上就是有顺序的意思。 优先级队列,即有顺序的队列,是一个无需我们自己进行排序操作,在数据传入时就会由容器自己排好序的…

Linux系统安装内网穿透实现固定公网地址访问本地MinIO服务

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂&am…

【蓝桥杯嵌入式】定时器的PWM输出与输入捕获(测量频率与占空比)

【蓝桥杯嵌入式】定时器的PWM输出与脉冲输 入捕获(测量频率与占空比) PWM输出cubemx配置程序设计 输入捕获cubemx配置程序设计 真题典例分析 PWM输出 cubemx配置 PWM输出引脚配置,这里使用PA6和PA7引脚输出两路PWM信号,分别对应的…

计算机提示msvcp140.dll丢失的解决方法

在日常操作与深度应用计算机系统的过程中,我们难免会遭遇各类技术性问题。其中,一种颇为常见且可能导致应用程序无法正常启动或运行的情况便是“msvcp140.dll文件缺失”。这一现象,对于无论是经验丰富的IT专业人士,还是对计算机知…

Linux操作系统(六):文件系统组件

参考资料:阿秀的笔记 文件系统 1. 文件系统的基本组成2. 文件的使用3.文件如何存储3.1 目录怎么存储 4.Linux继承于Unix系统的Unix文件实现方式4.1 Linux Ext 2/3 文件系统4.2 Linux Ext 4 文件系统4.3 磁盘空闲空间的管理机制4.3.1 空闲表法4.3.2 空闲链表法4.3.3…

网易云歌曲评论抓取

网易云歌曲评论爬取 步骤1.找到一首歌曲2.按下F12键打开开发者模式,对其进行抓包3.查找获得评论数据的接口4.对获得评论数据接口进行分析5.构建加密函数方法一方法二运行结果全部代码使用Js文件只使用python新的代码小结与展望这次的任务是获取网易云音乐下面的评论,涉及的知…

安卓四大组件——Service篇

1.作用 长时间位于后台(无界面)完成用户指定操作 1.1两类状态 (a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于sta…

HJ1 字符串最后一个单词的长度(字符串,import java.util.HashSet;)

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别int num sc.nextInt();boolean[] in new boolean[…

设计模式学习笔记 - 设计模式与范式 -行为型:8.状态模式:游戏、工作流引擎中常用的状态机是如何实现的?

概述 本章学习状态模式。在实际的开发中,状态模式并不是很常用,但是在能够用到的场景里,它可以发挥很大的作用。从这一点上看,它有点像我们之前讲到的组合模式。 状态模式一般用来实现状态机,而状态机常用在游戏、工…

✌2024/4/3—力扣—整数反转

代码实现: int reverse(int x) {long num 0;while (x ! 0) {num num * 10 x % 10;x x / 10;}if ((int)num ! num) {return 0;}return (int)num; }

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为…

Houdini笔记操作技巧_集锦

个人记录下,谨防遗忘。同时丰富下Hou的中文搜素环境。 1、自定义启动界面 ① 设置完界面后,保存自定义界面(Save Current Desktop As...) ② Edit-->Preferences-->General UIInterface-->Startup in Desktop&#xff1…

qt打包程序打包之跨平台

本文讲的是linux系统中的程序打包,首先我们创建一个简单的程序,我的程序叫做debtest 然后设置qmake来源,这个直接决定了程序依赖的qt库的位置,如果我们需要指定qt标准库的位置,那么qt环境就需要在那个位置。 修改前&am…

C# 如何修改项目名称

目录 背景具体步骤1、Visual Studio中修改项目名和程序集名称以及命名空间2、修改项目文件夹名3、修改解决方案里项目的路径4、再次打开解决方案,问题解决步骤总结 名词解释解决方案(Solution)项目(Project)程序集&…

【操作系统】CentOS7入门级安装

下载镜像 CentOS镜像下载Download (centos.org) 我们选择第一个 X86_64 CentOS Mirrors List 版本描述X86_X64带64位的32位扩展版(一般安装这个)ARM64 (aarch64)嵌入式。适用于微端(树莓派、机械臂、机械中控)IBM Power (ppc64le)专用于IBM POWER服务器 选择一个合适的链接 …

DSL - Wire 实现-ApiHug101

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace docs/ha…

javaScript手写专题——防抖/节流/闭包/Promise/深浅拷贝

目录 目录 一、 防抖/节流/闭包/定时器 编写一个组件,在input中输入文本,在给定的数据中查找相关的项目,并渲染搜索结果列表 1.新增InputSearch.vue组件 key的作用 2.新增 InputView.vue 3.添加路由 4.效果演示 follow up加上防抖怎么处理 1.…

如何从头开始编写LoRA代码,这有一份教程

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。 LoRA&…