Pillow图像缩放操作

在图像处理过程中经常会遇到缩小或放大图像的情况,Image 类提供的 resize() 方法能够实现任意缩小和放大图像。

resize() 函数的语法格式如下:
resize(size, resample=image.BICUBIC, box=None, reducing_gap=None)

参数说明:

size:元组参数 (width,height),图片缩放后的尺寸;

resample:可选参数,指图像重采样滤波器,与 thumbnail() 的 resample 参数类似,默认为 Image.BICUBIC;

box:对指定图片区域进行缩放,box 的参数值是长度为 4 的像素坐标元组,即 (左,上,右,下)。注意,被指定的区域必须在原图的范围内,如果超出范围就会报错。当不传该参数时,默认对整个原图进行缩放;

reducing_gap:可选参数,浮点参数值,用于优化图片的缩放效果,常用参数值有 3.0 和 5.0。

注意,resize() 会返回一个新的 image 对象。下面是一组对图像进行放大操的示例:

from PIL import Image
im = Image.open(“C:/Users/Administrator/Desktop/c-net.png”)
try:
#放大图片
image=im.resize((550,260))
#将新图像保存至桌面
image.save(“C:/Users/Administrator/Desktop/放大图像.png”)
print(“查看新图像的尺寸”,image.size)
except IOError:
print(“放大图像失败”)
输出结果:
查看新图像的尺寸 (550, 260)
放大后的图片效果。如下所示:

pilloe缩放图像
对图片的局部位置进行放大,示例如下:

from PIL import Image
im = Image.open(“C:/Users/Administrator/Desktop/c-net.png”)
try:
#选择放大的局部位置,并选择图片重采样方式
# box四元组指的是像素坐标 (左,上,右,下)
#(0,0,120,180),表示以原图的左上角为原点,选择宽和高分别是(120,180)的图像区域
image=im.resize((550,260),resample=Image.LANCZOS,box=(0,0,120,180))
image.show()
#保存
image.save(“C:/Users/Administrator/Desktop/放大图像.png”)
print(“查看新图像的尺寸”,image.size)
except IOError:
print(“放大失败”)

创建缩略图
缩略图(thumbnail image)指的是将原图缩小至一个指定大小(size)的图像。通过创建缩略图可以使图像更易于展示和浏览。

Image 对象提供了一个 thumbnail() 方法用来生图像的缩略图,该函数的语法格式如下:

thumbnail(size,resample)

size:元组参数,指的是缩小后的图像大小;

resample:可选参数,指图像重采样滤波器,有四种过滤方式,分别是 Image.BICUBIC(双立方插值法)、PIL.Image.NEAREST(最近邻插值法)、PIL.Image.BILINEAR(双线性插值法)、PIL.Image.LANCZOS(下采样过滤插值法),默认为 Image.BICUBIC。

使用示例如下:

from PIL import Image
im = Image.open(“C:/Users/Administrator/Desktop/c-net.png”)
im.thumbnail((150,50))
print(“缩略图尺寸”,im.size)
#将缩略图保存至桌面
im.save(“C:/Users/Administrator/Desktop/th.png”)

输出结果:

缩略图尺寸 (118, 50)
注意,缩略图的尺寸可能与您指定的尺寸不一致,这是因为 Pillow 会对原图像的长、宽进行等比例缩小,当指定的尺寸不符合图像的尺寸规格时,缩略图就会创建失败, 比如指定的尺寸超出了原图像的尺寸规格。

批量修改图片尺寸

在图像处理过程中,对于某些不需要精细处理的环节,我们往往采用批量处理方法,比如批量转换格式,批量修改尺寸,批量添加水印,批量创建缩略图等,这是一种提升工作效率的有效途径,它避免了单一、重复的操作。通过 Pillow 提供的 Image.resize() 方法可以批量地修改图片尺寸,下面看一组简单的示例。

首先找一些类型相同,但尺寸不一的图片,并把它们放入桌面的 image01 文件夹中。如下所示:

批量处理图片

图3:待处理的图片

下面开始编写代码:
批量修改图片尺寸

import os
from PIL import Image
#读取图片目录
fileName = os.listdir(‘C:/Users/Administrator/Desktop/image01/’)
print(fileName)
#设定尺寸
width = 350
height = 350
如果目录不存在,则创建目录
if not os.path.exists(‘C:/Users/Administrator/Desktop/NewImage/’):
os.mkdir(‘C:/Users/Administrator/Desktop/NewImage/’)

循环读取每一张图片

for img in fileName:
old_pic = Image.open(‘C:/Users/Administrator/Desktop/image01/’ + img)
new_image = old_pic.resize((width, height),Image.BILINEAR)
print (new_image)
new_image.save(‘C:/Users/Administrator/Desktop/NewImage/’+img)

输出结果如下所示:

[‘向日葵.jpg’, ‘国宝.jpg’, ‘矩形图.jpg’, ‘蝴蝶.jpg’]
<PIL.Image.Image image mode=RGB size=350x350 at 0x2B9E670>
<PIL.Image.Image image mode=RGB size=350x350 at 0x31D0C90>
<PIL.Image.Image image mode=RGB size=350x350 at 0x2B90DB0>
<PIL.Image.Image image mode=RGB size=350x350 at 0x31D0C90>
NewImage 目录的内容如下:

pillow图像处理

图4:处理完成的图片

Pillow图像缩放操作相关推荐

  1. halcon图像缩放

    用halcon自带的smartcontrol控件进行图像缩放操作 /// <summary>/// 图像缩放/// </summary>/// <param name=& ...

  2. 在simulink中实现图像的读取和缩放操作

    目录 一.理论基础 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:https://blog.csdn.net/ccsss22?type=blog 擅长技术: 1.无 ...

  3. 【UI 设计 - Adobe Illustrator】基本设置 (图像显示 | 图像缩放 | 置入导出 | 标尺 | 网格 | 参考线 | 画板)

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50232767 一. 基础操作 1. 设置图像显示效果 (1) ...

  4. 用线性插值算法实现图像缩放

    用线性插值算法实现图像缩放 猛禽[Mental Studio](个人专栏)(BLOG) http://mental.mentsu.com 在Windows中做过图像方面程序的人应该都知道Windows ...

  5. OpenCV_04 几何变换:图像缩放+图像平移+图像旋转+仿射变换+透射变换+图像金字塔

    1 图像缩放 缩放是对图像的大小进行调整,即使图像放大或缩小. API cv2.resize(src,dsize,fx=0,fy=0,interpolation=cv2.INTER_LINEAR) 参 ...

  6. OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()

    OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize() 一.图像金字塔定义: 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是 ...

  7. windows mobile 上面固定比例图像缩放

    最近一段时间太忙,上篇博客说是把图像缩放的算法放上来,今天放上来.这个算法参考的是线性插值法来实现,也就是最简单的方法,在手机上面受cpu计算能力的限制还有对图片质量要求不高,所以采用这种算法.如果需 ...

  8. 图像缩放、旋转、翻转、平移

    本文介绍几种常见的图像几何变换方法. 1. 图像缩放 图像缩放就是将源图像中的像素点经过算法映射到目标图像的像素点的过程,即找出目标图像中的像素点Pd(Xd,Yd)对应的源图像的像素点Ps(Xs,Ys ...

  9. OpenCV-Python学习(19)—— OpenCV 图像几何变换之图像缩放(cv.warpAffine、cv.resize)

    1. 学习目标 学习图像的缩放矩阵: 学习 OpenCV 图像缩放函数 cv.resize 和 cv.warpAffine. 2. 图像的缩放矩阵 缩放是物体在 x 轴和 y 轴的缩放比例. fx 是 ...

最新文章

  1. js 深拷贝,浅拷贝
  2. php 发送多个,向多个地址发送邮件的php类
  3. Shell脚本学习-阶段二十八-shell练习二
  4. 字面量(literal)与 C 语言复合字面量(compound literals)
  5. es6 提取数组对象一部分_ES6新特性你了解了多少呢?
  6. XP自动搜索功能修复
  7. 深入分析ConcurrentHashMap
  8. 网易云音乐歌单解析下载源码
  9. Java程序员面试简历模板(30套简历模板+300套简历)
  10. 在计算机中用于实现域名和IP地址转换的是,internet中用于实现域名和ip地址转换的是什么...
  11. 数据库表结构文档生成工具-screw (螺丝钉)
  12. 不要再被骗了------QQ盗号原理大揭秘
  13. 关于element-ui中轮播图手动切换轮播图片
  14. Eventide 2022假日活动
  15. android 截取验证码的两种实现方式
  16. python中的ascii码是啥_python ascii码到u
  17. [经验分享] 覃超线上直播课 如何快速搞定秋招算法面试
  18. DNS区域以及批量创建
  19. jQuery筛选-文档处理
  20. 研发团队管理经验总结(一)

热门文章

  1. 全球及中国CMP抛光设备行业发展态势及供需前景预测报告(2022-2027)
  2. 鼠标光标变成选中单个字符,而不是竖线,insert切换
  3. 数字沙盘规划模型3d动态展示提供更直观的三维效果
  4. fiddler auto responder
  5. 头歌平台(EduCoder)————软件测试(测试过程与策略)
  6. zzuli OJ 1051: 平方根的和
  7. 賣鞋網站MODISTA
  8. 粉笔科技张小龙:能传授知识文化和技能,就是对社会的贡献和交代
  9. 宋代民间私修家谱兴起的因素是什么?家谱内容有怎样的改变?
  10. 【数据挖掘】关联规则知识点