|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 MSK 于 2018-4-29 15:22 编辑
使用Image模块可以对一个Image对象进行画图操作
模块导入
- from PIL import ImageDraw
复制代码
首先,假设我们有一个Image对象im, 要在im上画图, 需要先创建一个Draw对象的实例,通过Draw对象的实例里的方法来对im进行画图
创建Draw实例
draw = ImageDraw.Draw(im) #im为Image对象
方法:
1.画一个矩形
函数原型
- draw.rectangle(box, options)
复制代码
box可以是一个包含两个表示坐标的序列,比如[(x1, y1), (x2, y2)], ((x1, y1), (x2, y2))
或者把四个表示位置的整数放在一起: [x1, y1, x2, y2]
options请参照本帖末
实例
- from PIL import Image,ImageDraw
- im = Image.open("img.jpg")
- draw = ImageDraw.Draw(im)
- im.rectangle([(100, 100), (200, 200)], outline="red", fill="blue")
- #im.show()
复制代码
颜色的表示请参照本帖末
2.绘制文字
原型
- draw.text(position, string, options)
复制代码
position: 绘制的位置(left-top)
string: 绘制的文本
实例:
- draw.text((100, 200),"I love Python", fill="red")
- #draw.text([100, 200],"I love Python", fill="red")
- #draw.text([(100, 200)],"I love Python", fill="red")
复制代码
另外, 绘制前可使用textsize获取文本大小
- draw.textsize(string, options) #⇒ (width, height)
复制代码
3.画线
原型
xy: 起点和终点坐标,表示方法同rectangle的第一个参数
4.画弧
原型
- draw.arc(xy, start, end, options)
复制代码
xy: 在矩形区域(xy)内画一个圆弧, xy表示方法同rectangle的第一个参数,如果区域不是正方形,则在该区域内的最大椭圆中根据角度截取片段
start: 开始角度
end: 结束角度
start与end方向与数学里的坐标系相反(数学里角度逆时针增大, 而这里是顺时针)
实例
- draw.arc((100,100,200,200),0,90,fill = "red") #画四分之一个圆弧
复制代码
5.画圆
原型
- draw.ellipse(xy, options)
复制代码
实例
- draw.ellipse((100,100,200,200),outline = 128) #画一个圆, 线条颜色为红色
- draw.ellipse((100,100,300,200),fill = "blue") #画个椭圆, 用蓝色填充
复制代码
6.画弦
原型
- draw.chord(xy, start, end, options)
复制代码
各参数用法同画弧
实例
- draw.ellipse((100,100,200,200),outline = 128) #画一个圆, 线条颜色为红色
- draw.chord((100,100,300,200), 0, 90, fill = "blue") #画一条弦, 蓝色
复制代码
7.画扇形
原型
- draw.pieslice(xy, start, end, options)
复制代码
各参数用法同画弧
- draw.ellipse((100,100,200,200),outline = 128) #画一个圆, 线条颜色为红色
- draw.pieslice((100,100,300,200), 0, 30, fill = "blue") #画个扇形, 用蓝色填充
复制代码
颜色的表示
1.十六进制表示法
比如“#ff0000” ,或者简写为"#f00"
2.rgb表示法
格式
“rgb(red, green, blue)”
比如rgb(255,0,0)表示红色,其中相应的数字也可以换为百分数所以"rgb(100%, 0%, 0%)"和rgb(255,0,0)是等价的
3.HSL(Hue-Saturation-Lightness, 色度-饱和度-亮度)
色度(Hue)取值范围为【0-360】(red=0, green=120, blue=240),饱和度(Saturation)取值范围为【0%-100%】 (gray=0%, full color=100%),亮度(lightness)取值范围为【0%-100%】 (black=0%, normal=50%, white=100%)。例如“hsl(0,100%,50%)”表示纯红色
4.颜色名
PIL支持基本的HTML颜色名,如red, blue, aqua等等
Options参数
1.outline 线条颜色
2.fill 填充颜色
3.font 字体(一个ImageFont实例, 详情请参考ImageFont模块)
|
|