PIL的ImageDraw库
PIL的ImageDraw库
from PIL import Image, ImageDraw
im = Image.open()
draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)
del draw
im.save(sys.stdout, )
//这个例子是在图片上画一条对角线
//现在我还没有开始学,所以暂时看不懂
//拿来运行了一遍,还不错
1.初始化需要绘图的图像
from PIL import Image,ImageDraw
im = Image.open("1.png")
draw = ImageDraw.Draw(im)
//此时初始化了一个draw对象
//接下来可使用各种方法在im图片对象上操作
2.获取当前字体
PIL.ImageDraw.ImageDraw.getfont()
from PIL import Image, ImageDraw
import sys
im = Image.open("1.png")
draw = ImageDraw.Draw(im)
print(draw.getfont())
//结果返回:PIL.ImageFont.ImageFont object at 0x04AB37D0
//应该是返回了当前字体的信息
//具体有什么用,还有待考察
3.在给定区域内获取位图
PIL.ImageDraw.ImageDraw.bitmap(xy, bitmap, fill=None)
from PIL import Image, ImageDraw
import sys
im01 = Image.open("1.png")
im02=Image.open("1.png")
r,g,b=im02.split()
draw=ImageDraw.Draw(im01)
draw.bitmap((0,0),b,(0,255,0))
im01.show()
//获取到了1.png的位图
//但是不知道r,g,b=im02.split()的用意
//r,g,b=im02.split()这个方法是将图片的三色通道分开
4.在所给图像中绘制一个圆或圆的一部分
PIL.ImageDraw.ImageDraw.chord(xy, start, end, fill=None, outline=None)
from PIL import Image, ImageDraw
import sys
im01 = Image.open("1.png")
draw=ImageDraw.Draw(im01)
draw.chord((0,0,200,200),0,180,(255,0,0),(0,255,0))
im01.show()
//在四元组区域绘制一个圆或者圆的一部分
//
5.绘制一个椭圆
PIL.ImageDraw.ImageDraw.ellipse(xy, fill=None, outline=None)
from PIL import Image, ImageDraw
import sys
im01 = Image.open("1.png")
draw=ImageDraw.Draw(im01)
draw.ellipse((0,0,200,200),(0,255,0),(0,0,255))
im01.show()
//在指定区域画一个椭圆
//参数的用法和.ImageDraw.arc是一样的
6.在图片中画一条线
PIL.ImageDraw.ImageDraw.line(xy, fill=None, width=0)
from PIL import Image, ImageDraw
im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.line([(100,50),(300,100)],(0,255,0),10)
im.show()
//第一个参数为一个二元组,每个元组中包含两个坐标
//分别为起始坐标和终止坐标
//第二个参数为线的颜色
//第三个参数为线的宽度
7.在图片上画点
PIL.ImageDraw.ImageDraw.point(xy, fill=None)
from PIL import Image, ImageDraw
im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.point([(20,100),(100,20),(50,50),(200,150)],(0,255,0))
im.show()
//在给定的元组内进行画点
//每个点占用一个像素
//测试的时候记得仔细找一找,一个像素很小
8.绘制一个多边形
PIL.ImageDraw.ImageDraw.polygon(xy, fill=None, outline=None)
from PIL import Image, ImageDraw
im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.polygon([(200,10),(50,50),(45,150),(42,195),(62,45)],(255,0,0))
im.show()
9.在指定的位置绘制一个字符
PIL.ImageDraw.ImageDraw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align=”left”, direction=None, features=None)
from PIL import Image, ImageDraw
im=Image.open("2.png")
draw=ImageDraw.Draw(im)
draw.text((10,10),"hello",(0,255,0))
im.show()
//第一个参数是坐标
//第二个是要打印的文本
//第三个是颜色
//第四个是字体
//align属性是字体对齐方式
//在最新的版本里面没有看到后面几个属性