codecamp

Pillow JPEG格式

Pillow 可以读取包含LRGB或 CMYK数据的JPEG,JFIF和Adobe JPEG文件。它编写标准和渐进式 JFIF 文件。

使用 ​draft() ​方法,您可以通过转换 ​RGB ​图像到 ​​,并在加载图像时将其大小调整为原始尺寸的1/2、1/4或1/8。

默认情况下,Pillow不允许加载截断的JPEG文件,可以设置 ​ImageFile.LOAD_TRUNCATED_IMAGES ​来覆盖他。

如果可用,该​open()​方法可以设置以下 ​info​ 属性:

  • jfif ​ 找到JFIF应用程序标记。如果文件不是JFIF文件,则此值不存在。
  • jfif_version ​表示JFIF版本(主版本、次版本)的元组。
  • jfif_density ​ 表示图像像素密度的元组,单位由jfif_unit指定
  • jfif_unit ​ jfif_密度的单位:

                0 - 无单位

                1 - 每英寸像素

                2 - 每厘米像素

  • dpi ​一个元组,表示报告的像素密度(以每英寸像素为单位),如果文件是JFIF文件,单位为英寸。
  • adobe ​ 找到Adobe应用程序标记。如果文件不是Adobe JPEG文件,则该值不存在。
  • adobe_transform​ 供应商特定标签。
  • progression ​ 表示这是一个渐进式JPEG文件。
  • icc_profile​ 图像的ICC颜色配置文件。
  • exif ​ 来自图像的原始exif数据。
  • comment​ 关于图像的评论。

7.1.0 新版功能.

这个​ save()​ 方法支持以下选项:

  • quality ​ 图像质量,范围从0(最差)到95(最佳)。默认值为75。应避免大于95的值;100禁用部分JPEG压缩算法,并导致大文件几乎没有任何图像质量增益。
  • optimize​ 如果存在且为真,则表示编码器应额外传递图像以选择最佳编码器设置。
  • progressive​ 如果存在且为真,则表示此图像应存储为渐进式jpeg文件。
  • dpi ​表示像素密度的整数元组, (x,y) 。
  • icc_profile ​ 如果存在且为真,图像将与提供的ICC配置文件一起存储。如果未提供此参数,则保存图像时不会附加配置文件。要保留现有配置文件,请执行以下操作:
im.save(filename, 'jpeg', icc_profile=im.info.get('icc_profile'))
  • exif ​ 如果存在,图像将与提供的原始exif数据一起存储。
  • subsampling​ 如果存在,设置编码器的子采样。
    • keep ​:仅对jpeg文件有效,将保留原始图像设置。
    • 4:4:4 ​,​ 4:2:2​ , ​4:2:0​ :特定采样值
    • -1​: 相当于 ​keep
    • 0​: 相当于 ​4:4:4
    • 1​: 相当于 ​4:2:2
    • 2​: 相当于 ​ 4:2:0
  • qtables​ 如果存在,设置编码器的qtables。这被列为jpeg文档中向导的高级选项。小心使用。 ​qtables ​可以是以下几种值之一:
    • 用于命名预设的字符串,例如 ​keep ​, ​web_low ​或 ​web_high
    • 64个整数列表的列表、元组或字典(integer keys = range(len(keys)))。必须有2到4张表。

2.5.0 新版功能.

要启用jpeg支持,您需要在构建python图像库之前构建和安装ijg jpeg库。有关详细信息,请参阅分发自述文件。


Pillow IM格式
Pillow JPEG2000格式
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Pillow 参考

Pillow ImageChops模块

关闭

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; }