python39
安装pil过程中报错
解决方案:
PIL这个库的名字官方改为了Pillow,PIL官方版不支持py3,不过有非官方那个的替代品pillow,地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow
所以
只需要pip install Pillow即可
补充知识:
python之PIL模块基础功能
Image主要是打开图片后,对图片进行编辑,主要有以下一些常用功能:
1、读取并显示图片:
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' ) img.show() |
2、显示图片大小:
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' ) print (img.size) |
3、把图片旋转40度并显示:
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' ) img.rotate.show() |
4、显示图片名称(包含路径):
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' ) print (img.filename) |
5、图片缩小一倍(大概是这么算法):
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' ) img.thumbnail((img.size[ 0 ] / 2 ,img.size[ 1 ] / 2 )) |
6、图片的像素点的缩放:
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' ) img_new = Image. eval (img, lambda x:x * 2 ) img_new.show() |
7、图片合成或融合:
1 2 3 |
from PIL import Image
#img1和img2大小要一样,并且其一为透明的,否则只能看到一个图片 PIL.image.alpha_composite(img1,img2)
#alpha表示透明度 PIL.image.blend(im1,im2,alpha) PIL.Image.composite(im1,im2,mask) |
8、创建并保存图片:
1 2 |
from PIL import Image
#使用RGB模式创建一个黑色的图形(还有L和RGBA模式) img = Image.new('RGB',(x,y),(0,0,0)) #L模式创建图形 img = Image.new('L',(x,y),255) #RGBA模式创建图形 img = Image.new('RGBA',(x,y),(0,0,0,255)) img.show() img.save('img.png') #查看模式 print(img.mode) |
9、将图片黑化(灰化):
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' ) img.convert( "L" ).show() |
10、图片的复制:
1 2 3 4 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' )
#这里也可以直接赋值 #img1 = img img1 = img.copy() img1.show() |
11、获取对应坐标的像素:
1 2 3 |
from PIL import Image img = Image. open ( "H:\\salary.png" , 'r' )
print (img.getpixel(x,y)) |
12、粘贴一个图片到另外一个图片上:
1 2 3 |
from PIL import Image
#俩个图片的mode要一致,不一致可以用convert转换 img1 = Image. open ( "H:\\salary.png" , 'r' ) img2 = Image. open ( "H:\\pig.png" , 'r' ) img1.paste(img2,( 50 , 15 )) img1.show() |
13、在给定图片上划直线:
1 2 3 |
from PIL import Image
from PIL import ImageDraw img = Image. open ( "H:\\salary.png" , 'r' ) draw = ImageDraw.Draw(img)
#传入俩个元祖参数,第一个是直线的俩端点坐标,另外一个是RGB draw.line((22,43,99,11),(150,150,150)) img.show() |
14、在给定图片上写文字:
1 2 3 |
from PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFont img = Image. open ( "H:\\salary.png" , 'r' )draw = ImageDraw.Draw(img)font = ImageFont.truetype( 'segoeuib.ttf' , 20 ) #传入4个参数:文字开始坐标,文字,颜色以及字体(字体可以不传入,使用默认字体)draw.text((50,60),'Hello,world',(140,255,166),font = font)img1.show() |