python图片处理库PIL的简单使用

一、安装

sudo pip3 install pillow

二、简单使用

# coding:utf-8

from PIL import Image,ImageDraw,ImageFont 
from io import BytesIO

#打开图片
img = Image.open('图片名')#从本地磁盘打开
img  = Image.open(BytesIO(文件二进制数据)) #从内存中读取图片

#重新设置图片像素大小
img = img.resize((宽, 高))

#查看图片的宽和高
img.size#(宽,高)元组
img.width #
img.heigth #

#查看图片中某一个点的rgb值(颜色)
img.getpixel((x,y))#以图片左上角为坐标原点,x和y表示该点的坐标
#如果图片进行了二值化处理,那么得到的就是那两个值之一

#修改某一个点的rgb值
img.putpixel((x,y),(rgb值))

#查看图片中的颜色统计,返回列表[(count,(rgb值))...]
img.getcolors()

#画笔工具:
draw = ImageDraw.Draw(img)
draw.line([(起点位置),(终点位置),(颜色)]) #绘线
draw.poin((位置),(颜色)) #绘点
font = ImageFont.truetype(字体,字号大小) #选择该系统中已有的字体
text = '需要绘制的字符'
font_width,font_height = font.getsize(text) #获得当前这个字符的宽和高
draw.text((位置),text,font=font,fill=(颜色)) #绘制字符

#图片灰度化和二值化处理
img2 = img.convert('L') #灰度化处理
threshold=127 #临界值,视具体情况而定
img3 = img2.point(lambda x:0 if x < threshold else 1,'1')#二值化处理

# 创建一个画布
new_img = Image.new('RGB',(宽,高),(255,255,255))

# 裁剪图片
crop_img = img3.crop((左,上,右,下))#以图片的左上角为坐标原点,左和右表示的是裁切线的横坐标,上和下表示的裁切线的纵坐标,比如完整裁剪:img.crop(0,0,宽,高)

# 粘贴图片
new_img.paste(crop_img,(x,y))#x和y表示粘贴左上角位置的横纵坐标

#保存图片
new_img.save('图片名')#存储到本地磁盘
buf = BytesIO()
new_img.save(buf,'png')#存储到内存,第二个参数为图片格式
binary_data = buf.getvalue()#获取内存中图片的二进制数据

 

 

posted @ 2021-05-10 16:02  eliwang  阅读(539)  评论(0编辑  收藏  举报