ITPub博客

首页 > 应用开发 > Python > Python批量处理图片

Python批量处理图片

原创 Python 作者:Winter 时间:2019-07-10 10:58:30 0 删除 编辑

1.Pillow库介绍

  • Pillow是Python里的图像处理库,提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等;

  • 安装


pip install pillow

2.Image类

  • PIL中最重要的类是Image类,使用前需要先从PIL中导入Image类,要从文件加载图像可以使用Image类中的open()函数: Image.open(fp, mode ='r' ) ,如果加载成功则会返回一个Image对象,fp是图片路径,mode是模式。图像的对象属性有filename源文件的文件名或路径、format图片的格式、size图片大小,以像素为单位、mode图片模式、width图像宽度、height图像高度、palette调色板表等;

  • save(fp, format=None, **params) :保存图像到给定的文件名下,如果没有指定格式则可以使用文件扩展名来确定要使用的格式,无返回值。fp是文件名或路径,format可选的格式覆盖;

  • thumbnail(size, resample=3) :指定图片的像素,size是大小,resample是重采样滤波器,可以是 Image.NEAREST Image.BILINEAR Image.BICUBIC 或者 Image.LANCZOS ,默认为 Image.BICUBIC

  • rotate(angle, resample=0, expand=0, ceter=None, translate=None) :旋转图片的方向,返回旋转后的图像副本,一个Image对象 。angle角度,逆时针旋转、resample重采样滤波器、expand是否展开、center旋转中心、translate旋转后;

  • filter(filter) :给图片添加滤镜,返回一个Image对象,filter是过滤器;

  • transpose(method) :旋转或翻转图像,返回旋转或翻转后的图像副本,一个Image对象。method可以是 Image.FLIP_LEFT_RIGHT Image.FLIP_TOP_BOTTOM Image.ROTATE_90 Image.ROTATE_180 Image.ROTATE_270 Image.TRANSPOSE 或者 Image.TRANSVERSE

  • show() :显示这个图像,此方法主要用于调试目的;


# 获取图片的基本信息
from PIL import Image
im = Image.open('./image.jpg')
# 获取图片的格式,大小,以及模式
print(im.format, im.size, im.mode)
# 指定图片的像素
im.thumbnail((128,128))
im.save('./image_128_128.jpg')
# 旋转图片的方向
dest_im = im.rotate(90)
dest_im.save('./image_rotate.jpg')
# 给图片添加滤镜
dest_im = im.filter(ImageFilter.GaussianBlur)
dest_im.show()
# 图片反转
dest_im = im.transpose(Image.FLIP_LEFT_RIGHT)       # 左右反转
dest_im = im.transpose(Image.FLIP_TOP_BOTTOM)   # 上下反转
dest_im.show()
# 图片上写文字
image = Image.open('image.jpg')
img_draw = ImageDraw.Draw(image)
img_draw.text((770,250),'hello world',fill='green')   # 放上文字信息到图像上
image.show()

3.ImageDraw模块

  • ImageDraw模块为Image对象提供简单的2D图形,可以使用此模块创建新图像,注释或润饰现有图像,以及动态生成图形以供Web使用;

  • ImageDraw.Draw(im,mode=None) :创建可用于在给定图像中绘制的对象,im要绘制的图像、mode 用于颜色值的可选模式;

  • ImageDraw.text(xy,text,fill=None,font=None,anchor=None,spacing=0,align =“left”,direction = None,features=None,language=None) :在给定位置绘制字符串,xy文本的左上角、text要绘制的文本、fill用于文本的颜色、direction文字的方向、language文字的语言;

  • ImageDraw.point(xy,fill=None) :在给定坐标处绘制点,xy元组的序列或类似的数值、fill用于点的颜色; 更多可以查看网址: https://pillow.readthedocs.io/en/latest/reference/index.html

4.批量将图片的大小设置为指定大小


import os
from PIL import Image
# 源目录
project_dir = os.path.dirname(os.path.abspath(__file__))
input = os.path.join(project_dir, 'src')
# 输出目录
output = os.path.join(project_dir, 'dest')
def modify():
    # 切换目录
    os.chdir(input)
    # 遍历目录下所有的文件
    for image_name in os.listdir(os.getcwd()):
        print(image_name)
        im = Image.open(os.path.join(input, image_name))
        im.thumbnail((128, 128))
        im.save(os.path.join(output, image_name))
if __name__ == '__main__':
    modify()

参考: https://www.9xkd.com/user/plan-view.html?id=1113747022

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69908432/viewspace-2650076/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Python操作word
请登录后发表评论 登录
全部评论
努力学习,做最好的自己!

注册时间:2019-01-23

  • 博文量
    97
  • 访问量
    75890