2024-01-30 使用python,把webp转换为png

现在网络上很多站点上使用的图片都换成了webp格式。webp格式文档的优点是:文件小,非常小。缺点也很明显,不太方便直接使用。需要使用比较专业的编辑工具。

使用python的Pillow库,可以将webp格式文件转换为png或jpg格式。

网上随意找了一张webp图片,图片地址,大小为44.9K。使用Pillow库转换为png为496K。


因为图片太大,使用了两种PNG压缩方式进行对比。

1 使用Pillow库对图片进行压缩,从44.9K压缩到496K。基本上没什么变化。

2 使用Tinity库进行图片压缩,需要使用api_key,点击(官方地址)获取api_key。非常出名的压缩工具。从624K压缩到289K。效果非常明显,图片质量损失很小。缺点是,速度慢。

3 使用Google提供的库,可惜不能翻墙,无法对比。

代码如下:

# 导入PNG压缩库

from PILimport Image

import tinify

import subprocess

# 使用webpa转换为PNG

def convert_webp_to_png(webp_file_path, output_png_file_path):

# 打开WebP格式的图片

    with Image.open(webp_file_path)as img:

width, height = img.size

# 转换为PNG格式

        png_img = img.save(output_png_file_path, 'PNG')

# 使用Pillow库对图片进行压缩

# 压缩质量很差,不推荐使用

def pillow_compress_image(pillow_input_image_path, pillow_output_image_path):

with Image.open(pillow_input_image_path)as image:

image.save(pillow_output_image_path, "PNG", optimize=True, quality=60)

# 使用Tinity库进行图片压缩

def tinity_compress_image(tinity_input_image_path, tinity_output_image_path):

tinify.key ="***" #这里需要填写您在官方申请的api_key

    with open(webp2png, 'rb')as source:

source_data = source.read()

result_data = tinify.from_buffer(source_data).to_buffer()

with open(tinity_output_image_path, 'wb')as output:

output.write(result_data)

# 使用tinify库对图片进行压缩

webp_file ='./output/Webp2jpg_png/example.webp'

webp2png ='./output/Webp2jpg_png/webp2png.png'

webp2png_Pillow ='./output/Webp2jpg_png/webp2png_Pillow.png'

webp2png_Tinity ='./output/Webp2jpg_png/webp2png_Tinity.png'

# 把webp转换为png

convert_webp_to_png(webp_file, webp2png)

# 使用pillow库压缩图片

pillow_compress_image(webp2png, webp2png_Pillow)

# 使用Tinity库压缩图片

tinity_compress_image(webp2png, webp2png_Tinity)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容