ImageDraw 模块为Image类提供了简单的2D图形。可以使用这个模块创建新图像,做注释或者对现有图像进行润饰,使用该模块还可以即时创建图像方便用于web。
PIL的更多高级绘图库,可参见 The aggdraw Module。
例子
在图像上绘制一个灰色的十字
import Image, ImageDraw
im = Image.open("lena.pgm")
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
# write to stdout
im.save(sys.stdout, "PNG")
概念
坐标
图形接口与PIL使用相同的坐标系统,(0,0)表示左上角。
颜色
要指定颜色,可以使用数值或者元组,就像你在 Image.new 或 Image.putpixel中使用的那样。对于 "1", "L", 和 "I" 图像,使用整数。“RGB”图像,使用包含整数的3元元组。对于“F”图像,使用整数或者浮点数。
对于调色板图像(模式 "P"),使用整数作为颜色索引。1.1.4及后继版本中,还可以使用RGB 3元组或者颜色名(见下面)。只要使用的颜色不超过256种,绘图层会自动分配颜色索引。
颜色名
PIL 1.1.4 及后继版本中,可以在向RGB图像中绘图的时候使用字符串常量。PIL支持下面的字符串格式:
· 十六进制颜色标识符,"#rgb" 或 "#rrggbb"形式给出。比如,"#ff0000"表示纯红色。
· RGB 函数, "rgb(red, green, blue)"形式给出,其中颜色值是0-255之间的整数。另外,颜色值还可以以百分比的形式给出(0% 到100%)。比如,"rgb(255,0,0)" 和 "rgb(100%,0%,0%)" 两个都指定了纯红色。
· Hue-Saturation-Lightness (HSL) 函数,"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%)" 是纯红色。
· 普通的 HTML 颜色名。ImageDraw 基于X Window系统和大部分网页浏览器支持的颜色提供了大约140 种标准颜色名。颜色名是大小写不敏感的,可以包含空格。比如, "red" 和 "Red" 都表示纯红色。
字体
PIL 可以使用位图字体和 OpenType/TrueType 字体。
位图字体保存在PIL自己的格式中,其中每个字体由两个文件组成,一个名为 .pil 另一个通常名为 .pbm。前者包含了字体矩阵,后者包含了光栅数据。
可以使用ImageFont模块提供的load函数加载位图字体。
要加载 OpenType/TrueType 字体,可以使用ImageFont模块提供的 truetype 函数。注意这个函数依赖第三方库,可能在有些PIL中不可用。
(IronPIL) 加载内建字体,可以使用ImageFont模块提供的Font构造器.
函数
Draw
Draw(image) => Draw instance
创建一个用来在所给图像上绘图的对象。
(IronPIL) 除了图像,你还可以使用ImageWin模块提供 HWND 或者 HDC 对象。这允许你直接在屏幕上绘制。
注意,修改直接应用到图像上。
方法
arc
draw.arc(xy, start, end, options)
会之后角start和end之间的弧(圆的一部分)到所给的区域。
outline (译注:似乎应该是fill)选项指出绘制弧使用的颜色。
bitmap
draw.bitmap(xy, bitmap, options)
使用当前的填充颜色,在给定位置绘制一个位图(遮罩层)。使用当前的填充色在指定位置绘制一个位图(遮罩层)。这个位图应该是一个有效的透明遮罩(模式“1”),或者matte (模式 "L" 或 "RGBA")。
使用图像的paste方法可以把像素数据粘贴到图像上。
chord
draw.chord(xy, start, end, options)
与arc相同,但是会用直线连接起始点。
outline 给出了弦(事实上是一个弓形)的轮廓的颜色。fill选项给出了弓形内部的填充色。
ellipse
draw.ellipse(xy, options)
在所个区域绘制一个椭圆。
outline 选项给出了椭圆轮廓线的颜色。fill 选项给出了椭圆的填充色。
line
draw.line(xy, options)
在xy列表提供的坐标间绘制一条线。
坐标列表包含的可以是2元元组,也可以是数值。但至少应该包含两组坐标。
fill 选项给出了线条的颜色。
(1.1.5新加)width 指定了线条的宽度,单位是像素。注意PIL对线段之间的链接处理的不是很好,所以较粗的多线看起来不是很好。
注意: width 在1.1.5中不能正常工作。绘制的线条宽度是你指定的两倍。这个错误将在1.1.6中修复。
pieslice
draw.pieslice(xy, start, end, options)
与arc相同,但是会在终点和区域的中心绘制直线(事实上绘制的是扇形)。
outline 选项指定了pieslice 轮廓线的颜色。fill选项指定了 pieslice 的填充色。
point
draw.point(xy, options)
在给定坐标画点(单个的点。
坐标列表可以是包含2元元组[ (x, y), ... ]或者是数值[ x, y, ... ]的序列对象。
fill 指定了点的颜色。
polygon
draw.polygon(xy, options)
绘制多边形。
多边形由相邻给出坐标之间的直线和起始点之间的直线构成。
坐标列表可以是包含2元元组[ (x, y), ... ]或者是数值[ x, y, ... ]的序列对象。
outline 选项指定了多边形轮廓线的颜色。fill选项指定了多边形的填充色。
rectangle
draw.rectangle(box, options)
绘制矩形。
box可以是任何包含2元元组 [ (x, y), (x, y) ]或是数值[ x, y, x, y ]的序列。它至少应该有两组坐标。
注意第二组坐标对指定的点刚好在矩形外边,不填充的时候也是这样。
outline 指定了矩形轮廓线的颜色。fill 选项指定了矩形的填充色。
text
draw.text(position, string, options)
在给定位置绘制字符串。Position给出了文本左上角的位置。
Font选项指定使用的字体。它应该是ImageFont类的实例,通常是由ImageFont模块提供的load方法从文件中加载的。.
fill 选项指定了文本使用的颜色。
textsize
draw.textsize(string, options) => (width, height)
返回给出文本的大小,单位是像素。
font 选项用来指定使用的字体。它应该是ImageFont类的实例,通常是由ImageFont模块提供的load方法从文件中加载的。
选项
outline
outline 整数或元组
fill
fill整数或元组
font
font ImageFont 的实例
Compatibility
Draw 类包含了一个构造器和许多方法只是为了保证它的向后兼容性。要使它正常工作,你应该要么应用这些选项到绘制图元上,要么使用这些方法。不要混合新旧约定。
(IronPIL) IronPIL不支持兼容方法。
ImageDraw
ImageDraw(image) => Draw instance
(不赞成)与Draw相同。不要在新代码中使用。
setink
draw.setink(ink)
(不赞成)设置绘制和填充颜色。
setfill
draw.setfill(mode)
(不赞成)设置填充模式。
如果模式是0,接下来只绘制形状的轮廓(比如多边形和矩形)。如果模式设置为1,形状会被填充。
setfont
draw.setfont(font)
(不赞成)设置text方法的默认字体。
Font参数应该是ImageFont类的实例,通常由ImageFont模块提供的load方法从文件中加载。
分享到:
相关推荐
主要介绍了Python图像处理库PIL的ImageDraw模块介绍详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在Python中,您可以使用各种库来绘制文本,其中最常用的是OpenCV和Pillow库。下面是使用这两个库绘制文本的资源描述: 使用OpenCV绘制文本: ...在Pillow中,您可以使用ImageDraw模块中的text()函数来绘制文本。该
文章目录Pillow模块讲解一、Image模块1.1 、打开图片和显示图片1.2、创建一个简单的图像1.3、图像混合(1)透明度混合(2)遮罩混合1.4、图像...亮度)五、ImageDraw模块5.1、绘制简单形状(1)绘制直线(2)绘制
在工作中有时候会给图上添加文字,常用的是PS工具,不过我想通过代码的方式来给图片添加文字。 需要使用的Python的图像库:PIL....ImageDraw模块:用来在图片上绘制点,线,图形和文字。 Draw(Ima
python PIL图像处理模块中的ImageDraw类支持各种几何图形的绘制和文本的绘制,如直线、椭圆、弧、弦、多边形以及文字等。 下面直接通过示例来进行说明: #-*- coding: UTF-8 -*- import numpy as np from PIL ...
还是用 Pillow 模块来实现 先来看一个简单的例子 >>> from PIL import Image >>> from PIL import ImageDraw >>> >>> image = Image.open('/Users/wxnacy/Downloads/vm-error1.png') >>> draw = ImageDraw.Draw...
ImageFont模块定义了相同名称的类,即ImageFont类。这个类的实例存储bitmap字体,用于ImageDraw类的text()方法。 PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(X...
在这之前,你首先得了解Python中的PIL库。PIL是Python Imaging Library的简称,PIL是一...在PIL库中,最常用的模块有Image,ImageDraw,ImageEnhance,ImageFile等。 PIL的下载地址为:http://www.pythonware.com/prod
本文实例为大家分享了python3 pillow模块验证码的具体代码,供大家参考,具体内容如下 直接放代码吧,该写的注释基本都写了 # -*- coding: utf-8 -*- # __author__: Pad0y from PIL import Image, ImageDraw, ...
既然要用到验证码,那就先准备好 随机选取的模块 导入 字符和数字的 集合(不是数据类型的集合) 准备图片需要的用到的工具、ImageDraw 和 ImageFont 将选取好的字符串返回 from random import choice, randint, ...
#导入三个模块 import Image,ImageDraw,ImageFont import random import math '''基本功能''' #图片宽度 width = 100 #图片高度 height = 40 #背景颜色 bgcolor = (255,255,255) #生成背景图片 image = Image.new('...
from PIL import Image,ImageDraw im = Image.open(th.png) draw = ImageDraw.Draw(im) #实例化一个对象 draw.line((0, 0) + im.size, fill=128, width=5) #线的起点和终点,线宽 draw.line((0, im.size[1], im.size...
python生成验证码主要用到如下模块:Image, ImageDraw, ImageFont, ImageFilter和随机数生成模块Random。 代码如下: #!/usr/bin/env python #coding=utf-8 import random import Image, ImageDraw, ImageFont,
from PIL import Image, ImageDraw, ImageFont from django.utils.six import BytesIO def verify_code(request): #引入随机函数模块 import random #定义变量,用于画面的背景色、宽、高 b
此段代码用到了PIL中的Image、ImageDraw、ImageFont模块,需要先安装Pillow(3.4.1)包, 详细文档参考 http://pillow.readthedocs.io/en/3.4.x/ Image表示画布对象 ImageDraw表示画笔对象 ImageFont表示字体对象,...
使用python3调用wxpy模块,监控linux日志并定时发送消息给群组或好友,具体代码如下所示: #!/usr/bin/env python3 # -*- coding: utf-8 -*- from __future__ import unicode_literals from threading import ...
from PIL import Image, ImageDraw, ImageFont #引入随机函数模块 import random #定义变量,用于画面的背景色、宽、高 bgcolor = (random.randrange(20, 100), random.randrange( 20, 100), random.randran
Python第三方库无比强大,PIL 是python的一个d第三方图片处理模块,我们也可以使用它来生成图片验证码 PIL安装 命令安装: pip install pillow 下载源码安装: 复制地址 :...