python 应用 之 转图片格式webp

news2025/1/17 6:18:19

需求:将图片转成webp格式

目录

一、python 图片转webp格式

1、安装python

2、webp 依赖的包

1)、PIP 安装Pillow

2)、VSCODE 选择python版本

2.1)、测试是否安装成功

2.2)、vscode选择python版本

3、python程序

1)、导入需要的库

2)、glob 搜索指定文件

3)、文件名相关操作

3.1)、分离路径和文件名

3.2)、分离文件名和扩展名

3.3)、文件更改扩展名

3.4)、 合成路径

3.4.1)、使用os.path.join()将多个路径合成一个路径

3.4.2)、pathlib.Path()类合并

4、源码


一、python 图片转webp格式

1、安装python

 其实已经安装了,但是CMD控制台,输入python后,并没有出现python信息

而是跳出应用商店,让下载python,而能是我之前的python版本低吧

新版安装后,

2、webp 依赖的包

webp是谷歌提供的格式,比PNG更小

谷歌提供了转换包,可以将其它格式转换为webp格式

1)、PIP 安装Pillow

2)、VSCODE 选择python版本

2.1)、测试是否安装成功

CMD PIP 是在最新版PYTHON上安装的,因为我有个低版本的,所以VSCODE 需要设置版本,要不然可能会出现找不到包的问题。

这个可以在 python 控制台窗口中 测试

2.2)、vscode选择python版本

使用 ctrl+shift+p 打开控制面板,

Select the interpreter,然后选择具体哪个版本的python即可

3、python程序

1)、导入需要的库

from pathlib import Path
from PIL import Image

2)、glob 搜索指定文件

使用Path 的glob 功能

当前目录下的 所有指定文件

    paths=Path("Z:\\BK\\webp").glob("*.jfif")

当前目录下及其子目录下的 所有指定文件

paths=Path("Z:\\BK\\webp").glob("**/*.jfif")

3)、文件名相关操作

3.1)、分离路径和文件名
import os

path = '/home/user/folder/file.txt'
dir_path, file_name = os.path.split(path)

print('Directory path:', dir_path)
print('File name:', file_name)


Directory path: /home/user/folder
File name: file.txt
3.2)、分离文件名和扩展名
import os

file_name = 'file.txt'
name, extension = os.path.splitext(file_name)

print('File name:', name)
print('Extension:', extension)


File name: file
Extension: .txt
3.3)、文件更改扩展名

with_suffix()是Python中pathlib.Path类的一个方法,它可以用来更改文件的扩展名。以下是使用with_suffix()方法更改文件扩展名的示例代码

from pathlib import Path

# 假设您有一个名为“file.txt”的文件
file_path = Path('file.txt')

# 使用with_suffix()方法更改文件扩展名
new_file_path = file_path.with_suffix('.docx')

print('New file name:', new_file_path.name)


New file name: file.docx
3.4)、 合成路径
3.4.1)、使用os.path.join()将多个路径合成一个路径
import os

path1 = '/home/user/folder'
path2 = 'file.txt'

full_path = os.path.join(path1, path2)

print('Full path:', full_path)


Full path: /home/user/folder/file.txt

3.4.2)、pathlib.Path()类合并

需要3.4以上版本

from pathlib import Path

path1 = Path('/home/user/folder')
path2 = Path('file.txt')

full_path = path1 / path2

print('Full path:', full_path)

Full path: /home/user/folder/file.txt

4、源码

from pathlib import Path
from PIL import Image
import os

imgDir="G:\\ai10"
desDir="G:\\ai10\\webp"
def convert_to_webp(source):
    sourceDir,fileName=os.path.split(source)
    newFileName=Path(fileName).with_suffix(".webp")
    newFilePath=os.path.join(desDir,newFileName)
    image=Image.open(source)
    image.save(newFilePath,format="webp")
    return newFilePath

def main():
    paths=Path(imgDir).glob("*.jfif")
    for path in paths:
        webp_path=convert_to_webp(path)
        print(webp_path)

main()   

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

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

相关文章

【深度学习】吴恩达课程笔记(二)——浅层神经网络、深层神经网络

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 笔记链接 【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础 吴恩达课程笔记——浅层神经网络、深层神经网络 四、浅层神经网络1.双层神经网络表示2.双层神经网络的前向传播第一层前向传播第二层前…

数据库简史:多主数据库架构的由来和华为参天引擎的机遇

注:本文发表后,收到了很多后台反馈,其中关于大型机的早期成就不容省略。微调重发本文,纯属个人观点,错谬之处,仍然期待指正。 2023年10月13日,在北京举办的“2023金融业数据库技术大会"上&…

前端 :用HTML和css制作一个小米官网的静态页面

1.HTML&#xff1a; <body><div id "content"><div id "box"><div id "top"><div id "top-left"><span id "logo">MI</span><span id "text-logo">小米账…

Java之数据类型与变量

目录 1. 字面常量 2. 数据类型 3. 变量 3.1 变量概念 3.2 语法格式 3.3 整型变量 3.3.1 整型变量 3.3.2 长整型变量 3.3.3 短整型变量 3.3.4 字节型变量 3.4 浮点型变量 3.4.1 双精度浮点型 3.4.2 单精度浮点型 3.5 字符型变量 3.6 布尔型变量 3.7 类型转换 3.7…

Kafka集群修改单个Topic数据保存周期

在大数据部门经常使用Kafka集群&#xff0c;有的时候大数据部门可能在Kafka中的Topic数据保存时间不需要很长&#xff0c;一旦被消费后就不需要一直保留。默认Topic存储时间为7day&#xff0c;个别的Topic或者某台Kafka集群需要修改Topic数据保存的一个周期&#xff0c;调整为3…

攻克组合优化问题!美国DARPA选中全栈量子经典计算公司Rigetti

&#xff08;图片来源&#xff1a;网络&#xff09; 近日&#xff0c;美国量子计算公司Rigetti宣布&#xff0c;它被美国国防高级研究计划局 (DARPA) 选中&#xff0c;加入想象未来量子实际应用 (IMPAQT) 计划&#xff0c;推进先进量子算法的研发&#xff0c;去解决组合优化问…

课题学习(九)----阅读《导向钻井工具姿态动态测量的自适应滤波方法》论文笔记

一、 引言 引言直接从原论文复制&#xff0c;大概看一下论文的关键点&#xff1a; 垂直导向钻井工具在近钻头振动和工具旋转的钻井工作状态下&#xff0c;工具姿态参数的动态测量精度不高。为此&#xff0c;通过理论分析和数值仿真&#xff0c;提出了转速补偿的算法以消除工具旋…

前端 : 用html ,css,js写一个你画我猜的游戏

1.HTML&#xff1a; <body><div id "content"><div id "box1">计时器</div><div id"box"><div id "top"><div id "box-top-left">第几题:</div><div id "box…

ROS自学笔记十八:ModuleNotFoundError: No module named ‘serial‘

出现上述错误&#xff0c;则需要安装serial功能包 第一步&#xff1a;输入 sudo apt install python3-pip 第二步&#xff1a;输入 pip install pyserial

C++打怪升级(九)- STL之string

~~~~ 前言1. STL简单介绍1.1 什么是STL?1.2 STL的版本最初的版本P.J版本RW版本SGI版本 1.3 STL的六大组件1.4 STL的一些缺点1.5 STL重要吗&#xff1f; 2 编码2.1 ASCII编码2.2 Unicode编码UTF-8编码 2.3 GBK编码 3. 类模板basic_string4. 单字符string类4.1 什么是string4.2 …

LV.12 D12 GPIO实验 学习笔记

一、GPIO简介 GPIO&#xff08;General-purpose input/output&#xff09;即通用型输入输出&#xff0c;GPIO可以控制连接在其之上的引脚实现信号的输入和输出 芯片的引脚与外部设备相连&#xff0c;从而实现与外部硬件设备的通讯、控制及信号采集等功能 实验步骤 1. 通过…

C/C++晶晶赴约会 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C晶晶赴约会 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C晶晶赴约会 2020年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 晶晶的朋友贝贝约晶晶下周一起去看展览&#xff0…

x210项目重新回顾之十七升级到linux4.19.114 +buildroot2018再讨论

代码参考https://github.com/colourfate/x210_bsp/ 他的是linux_4.10(dtb为 s5pv210-x210..dtb)我打算用linux4.19.114(dtb为 s5pv210-smdkv210.dtb) &#xff0c;所以修改build.sh ------------------------------------------------------------------------------ 5 M…

Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(下)

Flutter笔记 完全基于Flutter绘图技术绘制一个精美的Dart吉祥物Dash 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/arti…

NewStarCTF2023week4-溯源

题目描述是冰蝎进行WebShell连接的流量包&#xff0c;我们需要找到攻击者获取到的服务器用户名和服务器内网IP地址。 先介绍一下常见webshell工具的流量特征&#xff1a; 1、中国菜刀 请求体中存在eval、base64等特征字符&#xff1b; 连接过程中使用base64编码对发送的指令…

QT5.15在Ubuntu22.04上编译流程

在我们日常遇到的很多第三方软件中&#xff0c;有部分软件针对开发人员&#xff0c;并不提供预编译成果物&#xff0c;而是需要开发人员自行编译&#xff0c;此类问题有时候不是问题&#xff08;编译步骤的doc详细且清晰时&#xff09;&#xff0c;但有时候又很棘手&#xff08…

项目管理之如何分解项目工作

在项目管理中&#xff0c;产品分解结构&#xff08;PBS&#xff09;是一种重要的工具&#xff0c;可以帮助团队更好地理解和组织项目中的产品。通过产品分解结构&#xff0c;团队可以将产品的需求、功能、规格等分解成不同的层次和组成部分&#xff0c;以便更好地进行任务分配、…

Android系统的特性

目录 Android系统的特性 1. 显示布局 2. 数据存储 3. 网络 4. 信息 5. 浏览器 6. 编程语言支持 7. 媒体支持 8. 流媒体支持 9. 硬件支持 10. 多点触控 11.蓝牙 12. 多任务处理 13. 语音功能 14.无线共享功能 15. 截图功能 16. 跨平台 17. 应用程序的安全机制…

RabbitMQ学习03

文章目录 工作队列1. 轮询分发消息2. 消息应答1.概念2.自动应答3.消息应答的方法4.Multiple 的解释5.消息自动重新入队6. 手动应答代码 3. RabbitMQ持久化1. 概念2. 队列如何实现持久化3. 消息实现持久化4. 不公平分发5. 预取值 工作队列 工作队列(又称任务队列)的主要思想是避…

No authorization token was found

今天遇到了一个问题&#xff0c;我把前后端逻辑都理了一遍&#xff0c;开始怀疑后端&#xff0c;后端肯定没错了&#xff0c;把前端理了一遍&#xff0c;ok前后端没错&#xff0c;我错。登录哪里需要的token&#xff1f;&#xff1f;&#xff1f;&#xff1f;把我搞懵逼了。 测…