Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何转换png图片为jpg图片

如何转换png图片为jpg图片

作者头像
kbsc13
发布于 2020-04-23 01:48:53
发布于 2020-04-23 01:48:53
3.6K00
代码可运行
举报
文章被收录于专栏:AI 算法笔记AI 算法笔记
运行总次数:0
代码可运行

背景

最近在工作中会遇到需要将 png 图片转换为 jpg 图片的需求,主要原因也是 png 图片占的空间太大,如果图片数量上万张,可能就需要十几G的存储空间,所以希望转换为更小的 jpg 图片。

当然,这里并不是直接修改图片后缀为 jpg 即可,这样直接粗暴的转换可能会对图片质量有所损失,包括背景颜色会出现问题;

解决思路

实际上要将 png 图片转换为 jpg 格式的图片,其实就是从 4 通道的 png 转换为 3通道的 jpg 格式,也就是能保留原始的 RGB 三通道,只是去掉第四个通道的 alpha 通道,也就是我们需要将 RGB 通道的像素部分提取出来,然后贴到一个空白的新图片上,再保存为 jpg 图片即可。

代码实现

这里使用的是 Pillow 库来进行转换,然后这里需要注意不同模式的图片,处理方式还是有所不同的。

这里简单介绍,通过 Pillow 打开的图片,有以下几种模式:

  • 1:1位像素,表示黑和白,但是存储的时候每个像素存储为8bit。
  • L:8位像素,表示黑和白。
  • P:8位像素,使用调色板映射到其他模式。
  • RGB:3x8位像素,为真彩色。
  • RGBA:4x8位像素,有透明通道的真彩色。
  • CMYK:4x8位像素,颜色分离。
  • YCbCr:3x8位像素,彩色视频格式。
  • I:32位整型像素。
  • F:32位浮点型像素。

通过 mode 即可查看图片的模式。

这里介绍比较常见的几种模式转换为 jpg 的方法,首先是 L 模式的转换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from PIL import Image
im = Image.open("test.png")
bg = Image.new("RGB", im.size, (255,255,255))
bg.paste(im,im)
bg.save("test.jpg")

然后是 RGBAP 模式的转换,其转换方法也是一样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from PIL import Image
img_pil = Image.open('test.png').convert('RGBA')
x, y = img_pil.size
p = Image.new('RGBA', img_pil.size, (255, 255, 255))
p.paste(img_pil, (0, 0, x, y), img_pil)
p = p.convert("RGB")
p.save('test.jpg')

下面给出一个代码例子:

首先是导入需要的库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os
from PIL import Image
%matplotlib inline
import matplotlib.pyplot as plt

接着读取图片:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 原始的 png 图片
ori_img = 'plane.png'
# 读取图片
img_png = Image.open(ori_img)
print(img_png.mode, img_png.size)
plt.imshow(img_png)

开始转换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 转 jpg
img_pil = img_png.convert('RGBA')
x, y = img_pil.size
img_jpg = Image.new('RGBA', img_pil.size, (255, 255, 255))
img_jpg.paste(img_pil, (0, 0, x, y), img_pil)
img_jpg = img_jpg.convert("RGB")
print(img_jpg.mode, img_jpg.size)
plt.imshow(img_jpg)

保存图片:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
img_jpg.save('plane.jpg')

代码输出结果如下所示:

通过这种操作,原本是 128kb 的 png 图片转换为 38kb 左右的 jpg 图片,减少了接近 4 倍的存储空间,如下所示:

所以如果对图片质量要求不高,可以接受一定的质量损失,可以将图片保存为 jpg 格式进行保存,这样可以保存更多数量的图片。

参考:

  • http://www.voidcn.com/article/p-rbpllhah-btp.html

小结

这只是一种解决 png 转换为 jpg 图片的方法,是从采用 Pillow 库的代码实现方法,如果是采用其他的图片库,比如 opencv 等,也有相应的解决方法,这里大家可以自己探索一下,网上应该也是有相应的解决方法的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法猿的成长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python Image 库(PIL)常用操作函数
Python 里面最常用的图像操作库是Image library(PIL),功能上,虽然还不能跟Matlab比较,但是还是比较强大的,写点记录笔记。
十四君
2019/11/24
5.7K0
Python学习,这有可能是最详细的PIL库基本概念文章了
PIL有如下几个模块:Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance模块、ImageFile模块、ImageFileIO模块、ImageFilter模块、ImageFont模块、ImageGrab模块、ImageOps模块、ImagePath模块、ImageSequence模块、ImageStat模块、ImageTk模块、ImageWin模块、PSDraw模块
一墨编程学习
2018/12/05
1.1K0
Python学习,这有可能是最详细的PIL库基本概念文章了
深入剖析Python最强大图片处理模块---Pillow
Pillow作为一个图片模块。可谓是真的简便强大,它的前身是PIL,后来将他取代,现在的pillow 可谓是一家独大,好了,让我们来看看他的具体用法。
Python进阶者
2021/04/19
1.1K0
深入剖析Python最强大图片处理模块---Pillow
python3之成像库pillow
python提供了python image library图像库,处理图像功能,该库提供了广泛的文件格式支持,如JPEG、PNG、GIF、等,它提供了图像档案、图像显示、图像处理等功能
菲宇
2019/06/13
1.5K0
Python Pillow(PIL)库的用法介绍
在Python2中,PIL(Python Imaging Library)是一个非常好用的图像处理库,但PIL不支持Python3,所以有人(Alex Clark和Contributors)提供了Pillow,可以在Python3中使用。
Python碎片公众号
2021/02/26
2K0
Python Pillow(PIL)库的用法介绍
Python生成CSDN博客分享图
我们分享博客的方式有很多种,最常见的无非就是分享链接。或者是编辑一条消息,写上标题链接等东西。但是这种方式都不够直观,相比之下图片的方式要更引人注目。CSDN移动端提供了分享图的功能,但是展示的内容是固定的,所以我就想到用Python自己生成分享图。本文只是技术分享,所以在效果上没有下太多功夫,生成的图片比官方是要丑得多,还需包含。
ZackSock
2020/06/04
5800
Python 技术篇-用PIL库修改图片透明度,改变png图片色道为RGBA、RGB。
PIL库可以设置图片透明度。 pip install pillow安装了pillow库后就可以使用PIL库了。
小蓝枣
2020/09/23
3.9K0
Python 让我舅舅的书法作品和 PIL 库发生点美的误会
不久之前写过一篇文章,详细介绍了 PIL 库中的 Image 模块的使用。曾经学习过、使用过一段时间的 PS,认识 PIL 后,觉得这这玩意太好玩了,有了想使用 PIL 库实现 PS 中的图片特效的想法。
一枚大果壳
2022/08/23
5570
Python  让我舅舅的书法作品和 PIL 库发生点美的误会
来,我教你用Python做个音乐海报
前段时间在一个朋友那么得到的灵感,想到可以用音乐播放页面作为一张海报图片。其实接下来要讲的和海报还是有差距的,而具体实现也只是简单的图片粘贴,但是在效果上还是不错的。效果图如下,希望大家喜欢:
ZackSock
2020/03/04
9470
图像处理库Pillow(PIL)的使用-2(实例+详细注释+图片脚本)
图片的保存主要有两种方法,分别是Image模块中的save方法和convert()方法,下面分别对他们进行介绍:
laity
2025/02/25
2680
图像处理库Pillow(PIL)的使用-2(实例+详细注释+图片脚本)
python PIL.Image使用
PIL也支持一些特殊的模式,包括RGBX(有padding的真彩色)和RGBa(有自左乘alpha的真彩色)。
py3study
2020/01/08
1.5K0
【干货】计算机视觉实战系列01——用Python做图像处理
【导读】在当今互联网飞速发展的社会中,数量庞大的图像和视频充斥着我们的生活,让我们需要对图片进行检索、分类等操作时,利用人工手段显然是不现实的,于是,计算机视觉相关技术便应运而生,并且得到了快速的发展
WZEARW
2018/04/13
3K0
【干货】计算机视觉实战系列01——用Python做图像处理
Python 趣味练习- 修改图片
https://github.com/Yixiaohan/show-me-the-code
py3study
2020/01/15
7980
Python 趣味练习- 修改图片
【Python从入门到精通】(二十六)用Python的PIL库(Pillow)处理图像真的得心应手
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。本篇重点介绍Python处理图像的标准库PIL库,处理图像真的的很方便。 干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。
码农飞哥
2021/10/08
3.7K0
SCF: 深度学习之目标检测
很多小伙伴,可能在使用SCF的时候,需要做一些深度学习的操作,但是SCF能跑起来深度学习么?这是个问题!那么,我们就尝试一下,看看如何让SCF跑起来深度学习!
None-xiaomi
2019/06/12
11.6K0
python浮雕图片_python图片处理PIL
PIL中所涉及的基本概念有如下几个:通道(bands)、模式(mode)、尺寸(size)、坐标系统(coordinate system)、调色板(palette)、信息(info)和滤波器(filters)
全栈程序员站长
2022/08/31
2K0
Python 图像处理_图像处理的一般步骤
对我个人而言使用Python图像处理意在取代matlab,集中化使用Python环境保证之后在机器学习和OpenCV的使用上具有一致性,虽然从实验室师兄师姐的口中得知Python的图像处理较之matlab相对复杂(应该只是代码量的问题),但我依然觉得学习python环境比较实用和高效。在进行Python图像处理之前,Pillow是不可或缺的实用性工具,pillow是Python Imaging Library的缩写,Pillow由PIL而来,导入该库使用import PIL。同时感谢Python社区内的翻译工作者,将pillow的英文稳当翻译为汉语文档。传统的PIL库不支持python3,所以使用从PIL派生出来的Pillow库。
全栈程序员站长
2022/11/04
1.5K0
Python 细聊!可以媲美 PS 的 PIL 图片处理库
PIL 库中提供了诸多用来处理图片的模块,可以对图片做类似于 PS(Photoshop) 的编辑。
一枚大果壳
2022/08/23
1.1K0
Python 细聊!可以媲美  PS  的 PIL 图片处理库
别再@官方啦,10行代码给自己头像加国旗
在日常生活中,我们需要处理图片的地方有很多,像这次是加国旗,下次可能就是加个圣诞帽。不会PS怎么办,万能的python可以搞定一切。
赵云龙龙
2019/09/27
1.5K0
别再@官方啦,10行代码给自己头像加国旗
相关推荐
python Image 库(PIL)常用操作函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验