codecamp

pillow 图片格式转换

Pillow 库支持多种图片格式,您可以直接使用 ​open()​ 方法来读取图片,并且无须考虑图片是何种类型。同时,Pillow 能够很轻松地实现图片格式之间的转换。

图片格式之间的转换主要有以下两种方法,下面分别对它们进行了介绍:


save()

顾名思义,​save() ​方法用于保存图像,当不指定文件格式时,它会以默认的图片格式来存储;如果指定图片格式,则会以指定的格式存储图片。save() 的语法格式如下:

Image.save(fp, format=None)

参数说明如下:

  • fp:图片的存储路径,包含图片的名称,字符串格式;
  • format:可选参数,可以指定图片的格式。

示例如下:

from PIL import Image
im = Image.open("./w3cschool.png")
im.save('../w3cschool.bmp')

此时您的计算机桌面上会存在一个 w3cschool.BMP格式的图片。


convert()+save()

注意,并非所有的图片格式都可以用 ​save()​ 方法转换完成,比如将 PNG 格式的图片保存为 JPG 格式,如果直接使用 ​save()​ 方法就会出现以下错误:

from PIL import Image
im = Image.open("./w3cschool.png")
im.save('./w3cschool.jpg')

错误信息如下所示:

#系统错误,RGBA不能作为JPEG图片的模式
OSError: cannot write mode RGBA as JPEG

引发错误的原因是由于 PNG 和 JPG 图像模式不一致导致的。其中 PNG 是四通道 RGBA 模式,即红色、绿色、蓝色、Alpha 透明色;JPG 是三通道 RGB 模式。因此要想实现图片格式的转换,就要将 PNG 转变为三通道 RGB 模式。


Image 类提供的 ​convert() ​方法可以实现图像模式的转换。该函数提供了多个参数,比如 modematrixdither 等,其中最关键的参数是 mode,其余参数无须关心。语法格式如下:

convert(mode,parms**)
  • mode​:指的是要转换成的图像模式;
  • params:其他可选参数。

修改后的代码如下所示:

from PIL import Image
im = Image.open("./w3cschool.png")
#此时返回一个新的image对象,转换图片模式
image=im.convert('RGB')
#调用save()保存
image.save('./w3cschool.jpg')

通过以上代码,成功将 PNG 格式的图片转换为了 JPG 格式。 


pillow image对象属性
pillow 图像缩放操作
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }