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方法从文件中加载。
分享到:
相关推荐
ImageDraw模块提供了基本的图形处理功能,创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形。 ImageEnhance模块是一些图像增强的类,它们分别为Color类、Brightness类、Contrast类和Sharpness类。 ...
PIL 提供了强大的 ImageDraw 模块,包括图像绘制功能,例如绘制图形、文本等。使用 ImageDraw 模块可以实现图像绘制。 第 14 章 ImageEnhance 模块 PIL 提供了强大的 ImageEnhance 模块,包括图像增强功能,例如...
ImageDraw模块用于绘制图形,如线条、矩形、圆形等;ImageFont模块与freetype库结合,支持在图像上添加各种字体的文字;而ImageTk模块则用于将PIL处理后的图像转换为Tkinter可以使用的格式,便于在GUI应用中展示。 ...
3. **ImageDraw模块**: - 提供基本的图形处理功能,能够在图像上绘制线条、形状和文本,适合创建新的图像或在现有图像上进行注释和修饰。 4. **ImageEnhance模块**: - 包含了用于图像增强的类,如`Color`、`...
ImageDraw 模块提供了绘制图形和文本的功能,而 ImageEnhance 模块提供了图像增强的功能。 Python 图像处理技术使用 Python 语言和 PIL 软件包提供了一个强大且灵活的图像处理平台,可以满足各种图像处理需求。
- **ImageDraw模块**:用于在图像上进行绘图,支持绘制线条、矩形、圆等图形,并可设置轮廓线和填充色。 - **ImageEnhance模块**:提供增强图像质量的功能,如调整亮度、对比度和锐度。 - **ImageFile模块**:处理...
在Python中,您可以使用各种库来绘制文本,其中最常用的是OpenCV和Pillow库。下面是使用这两个库绘制文本的资源描述: 使用OpenCV绘制文本: ...在Pillow中,您可以使用ImageDraw模块中的text()函数来绘制文本。该
ImageDraw模块支持在图像上绘制基本的图形,如线条、矩形、圆形、多边形等。ImageEnhance模块提供了增强图像特性的工具,比如亮度、对比度、颜色以及锐度的增强。ImageFont模块用来处理文本,可以用于在图像上添加...
3. **ImageDraw模块**:用于在图像上进行绘图,支持线条、矩形、圆形和其他几何形状的绘制。 4. **ImageFont模块**:处理文本和字体,可以添加文本到图像中。 5. **ImageColor模块**:处理颜色,可以解析、转换和...
#### ImageDraw模块 用于在图像上进行绘图操作,如画线、画圆、填充矩形等。还包括了坐标、颜色名称和字体等概念的介绍,以及绘图操作的一些选项。 #### ImageEnhance模块 用于增强图像的特定方面,如色彩、亮度、...
3. **创建文本水印**:使用PIL的ImageDraw模块和ImageFont模块创建带有文字的水印。ImageFont可以加载系统字体或自定义字体文件,然后在ImageDraw对象上绘制文字。例如: ```python from PIL import ImageDraw, ...
3. **ImageDraw**:`ImageDraw` 是 PIL 库中的一个子模块,用于在 Image 对象上进行绘图操作,如绘制点、线、矩形、圆等。 4. **字符串格式化**:Python 中的一种方法,用于格式化字符串,使其包含动态数据。在这个...
3. ImageDraw模块:用于在图像上绘制线条、形状和文本。 4. ImageFont模块:提供了字体管理和文字渲染的功能。 5. ImageChops模块:提供了图像运算,如图像相减、相加、对比度调整等。 四、Pillow-2.6.2的使用...
ImageDraw模块则用于在图像上绘制图形;ImageFont和ImageOps则分别用于字体管理和图像操作。 2. **图像操作** - **打开和保存图像**:Pillow库可以处理多种格式的图像文件,如JPEG、PNG、BMP、GIF等。使用`Image....
3. ImageDraw模块:提供了绘图功能,可以用于在图像上绘制线条、矩形、圆形等图形。 4. ImageFont和ImageColor模块:分别用于处理字体和颜色,为图像添加文字或调整色彩。 三、Pillow库的主要功能 1. 图像打开与...
2. **ImageDraw模块**:提供了基本的绘图功能,可以用于在图像上绘制线条、形状和文本,为图像添加元素或进行编辑。 3. **ImageEnhance模块**:主要用于图像的增强,包括亮度、对比度、颜色平衡等的调整,可以提升...
这通常涉及对 PIL 库中 Image 和 ImageDraw 模块的使用,用于创建和绘制图像。 3. **文字排版**:将用户的名字或其他文本以艺术化的方式排列在模板上,可以调整字体、大小、颜色、倾斜度等属性。PIL 的 ImageDraw ...
- `ImageDraw模块`:用于在图像上绘图,支持各种图形和文本操作。 - `ImageEnhance模块`:图像增强功能。 9. **坐标系统和信息**: - PIL使用左上角为原点的坐标系统。 - `info`属性提供图像元数据,如分辨率、...