`

ImageDraw 模块

    博客分类:
  • PIL
阅读更多
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图像处理库PIL的ImageDraw模块介绍详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    python 绘制文本的脚本文件

    在Python中,您可以使用各种库来绘制文本,其中最常用的是OpenCV和Pillow库。下面是使用这两个库绘制文本的资源描述: 使用OpenCV绘制文本: ...在Pillow中,您可以使用ImageDraw模块中的text()函数来绘制文本。该

    超全Python图像处理讲解(多图预警)

    文章目录Pillow模块讲解一、Image模块1.1 、打开图片和显示图片1.2、创建一个简单的图像1.3、图像混合(1)透明度混合(2)遮罩混合1.4、图像...亮度)五、ImageDraw模块5.1、绘制简单形状(1)绘制直线(2)绘制

    Python实现图片添加文字

    在工作中有时候会给图上添加文字,常用的是PS工具,不过我想通过代码的方式来给图片添加文字。 需要使用的Python的图像库:PIL....ImageDraw模块:用来在图片上绘制点,线,图形和文字。 Draw(Ima

    python ImageDraw类实现几何图形的绘制与文字的绘制

    python PIL图像处理模块中的ImageDraw类支持各种几何图形的绘制和文本的绘制,如直线、椭圆、弧、弦、多边形以及文字等。 下面直接通过示例来进行说明: #-*- coding: UTF-8 -*- import numpy as np from PIL ...

    Python 使用 Pillow 模块给图片添加文字水印的方法

    还是用 Pillow 模块来实现 先来看一个简单的例子 >>> from PIL import Image >>> from PIL import ImageDraw >>> >>> image = Image.open('/Users/wxnacy/Downloads/vm-error1.png') >>> draw = ImageDraw.Draw...

    Python图像处理库PIL的ImageFont模块使用介绍

    ImageFont模块定义了相同名称的类,即ImageFont类。这个类的实例存储bitmap字体,用于ImageDraw类的text()方法。 PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(X...

    python PIL模块与随机生成中文验证码

    在这之前,你首先得了解Python中的PIL库。PIL是Python Imaging Library的简称,PIL是一...在PIL库中,最常用的模块有Image,ImageDraw,ImageEnhance,ImageFile等。 PIL的下载地址为:http://www.pythonware.com/prod

    python3 pillow模块实现简单验证码

    本文实例为大家分享了python3 pillow模块验证码的具体代码,供大家参考,具体内容如下 直接放代码吧,该写的注释基本都写了 # -*- coding: utf-8 -*- # __author__: Pad0y from PIL import Image, ImageDraw, ...

    Python 超简单生成 验证码图片 -pilow模块

    既然要用到验证码,那就先准备好 随机选取的模块 导入 字符和数字的 集合(不是数据类型的集合) 准备图片需要的用到的工具、ImageDraw 和 ImageFont 将选取好的字符串返回 from random import choice, randint, ...

    python使用pil生成图片验证码的方法

    #导入三个模块 import Image,ImageDraw,ImageFont import random import math '''基本功能''' #图片宽度 width = 100 #图片高度 height = 40 #背景颜色 bgcolor = (255,255,255) #生成背景图片 image = Image.new('...

    python 实现PIL模块在图片画线写字

    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编写生成验证码的脚本的教程

    python生成验证码主要用到如下模块:Image, ImageDraw, ImageFont, ImageFilter和随机数生成模块Random。 代码如下: #!/usr/bin/env python #coding=utf-8 import random import Image, ImageDraw, ImageFont,

    python如何生成网页验证码

    from PIL import Image, ImageDraw, ImageFont from django.utils.six import BytesIO def verify_code(request): #引入随机函数模块 import random #定义变量,用于画面的背景色、宽、高 b

    基于Django的python验证码(实例讲解)

    此段代码用到了PIL中的Image、ImageDraw、ImageFont模块,需要先安装Pillow(3.4.1)包, 详细文档参考 http://pillow.readthedocs.io/en/3.4.x/ Image表示画布对象 ImageDraw表示画笔对象 ImageFont表示字体对象,...

    使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友

    使用python3调用wxpy模块,监控linux日志并定时发送消息给群组或好友,具体代码如下所示: #!/usr/bin/env python3 # -*- coding: utf-8 -*- from __future__ import unicode_literals from threading import ...

    Django 登陆验证码和中间件的实现

    from PIL import Image, ImageDraw, ImageFont #引入随机函数模块 import random #定义变量,用于画面的背景色、宽、高 bgcolor = (random.randrange(20, 100), random.randrange( 20, 100), random.randran

    Python简单的制作图片验证码实例

    Python第三方库无比强大,PIL 是python的一个d第三方图片处理模块,我们也可以使用它来生成图片验证码 PIL安装 命令安装: pip install pillow 下载源码安装: 复制地址 :...

Global site tag (gtag.js) - Google Analytics