Python中怎么批量处理图片,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Pillow是Python里的图像处理库,提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等;
安装
pip install pillow
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()
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
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()
关于Python中怎么批量处理图片问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。