导航:首页 > 编程语言 > imagedrawpython

imagedrawpython

发布时间:2023-03-31 16:11:01

python 怎样随机生成中文字符

# -*- coding: utf-8 -*-
import Image,ImageDraw,ImageFont
import random
import math, string
class RandomChar():
"""用于随机生成汉字"""
@staticmethod
def Unicode():
val = random.randint(0x4E00, 0x9FBF)
return unichr(val)
@staticmethod
def GB2312():
head = random.randint(0xB0, 0xCF)
body = random.randint(0xA, 0xF)
tail = random.randint(0, 0xF)
val = ( head << 8 ) | (body << 4) | tail
str = "%x" % val
return str.decode('hex').decode('gb2312')
class ImageChar():
def __init__(self, fontColor = (0, 0, 0),
size = (100, 40),
fontPath = 'wqy.ttc',
bgColor = (255, 255, 255),
fontSize = 20):
self.size = size
self.fontPath = fontPath
self.bgColor = bgColor
self.fontSize = fontSize
self.fontColor = fontColor
self.font = ImageFont.truetype(self.fontPath, self.fontSize)
self.image = Image.new('庆世RGB', size, bgColor)
def rotate(self):
self.image.rotate(random.randint(0, 30), expand=0)
def drawText(self, pos, txt, fill):
draw = ImageDraw.Draw(self.image)
draw.text(pos, txt, font=self.font, fill=fill)
del draw
def randRGB(self):
return (random.randint(0, 255),
random.randint(0, 255),
random.randint(0, 255))
def randPoint(self):
(width, height) = self.size
return (random.randint(0, width), random.randint(0, height))
def randLine(self, num):
draw = ImageDraw.Draw(self.image)
for i in range(0, num):
draw.line([self.randPoint(), self.randPoint()], self.randRGB())
del draw
def randChinese(self, num):
gap = 5
start = 0
for i in range(0, num):
char = RandomChar().GB2312()
x = start + self.fontSize * i + random.randint(0, gap) + gap * i
self.drawText((x, random.randint(-5, 5)), RandomChar().GB2312(), self.randRGB())
self.rotate()
self.randLine(18)
def save(self, path):
self.image.save(path)
以上是Python随机埋孝生成中弯差稿文验证码的实例代码

㈡ pythonpil粘贴文字自动换行

使用PIL库中的ImageDraw.Draw()方法可以实现题述情况,具体步骤如下:

1. 创建一个Image对象,并使用ImageDraw.Draw()方法创建一个画布。
2. 使用ImageDraw.text()方法将文字写镇猛入画布中。
3. 设置文字的宽度,并使用splitlines()方烂春法将文御历桥字拆分成多行。
4. 使用for循环遍历每一行文字,并将其写入到画布中。
5. 保存图片即可。

㈢ python的pillow用ImageDraw.Draw.polygon如何填充半透明的颜色

>> fill = (200, 10, 10, 0.5)

对于RGBA模式的图片,填充半透明色,alpha位置取值是0-255,你希望50%,应该是用128,不是0。5


>> 我这里画了一个比如三角形,准备再画一个三角形,也是半透明的,那么这两个颜色是可以混合起来的吧?

直接在同一个Image上绘图是不行的。后面画的会直接覆盖前面的,颜色不会自动融合。如果想要融合的效果,需要用Image.blend(im1, im2, 0.5)或者Image.composite(im1, im2, mask)其中mask需要带alpha参数,可以设置为128.

#!/usr/bin/envpython2
#coding=utf-8

"""
.
"""

fromPILimportImage,ImageDraw


defmain():
im=Image.new("RGBA",(800,800))
draw=ImageDraw.Draw(im)
draw.rectangle((0,0,200,200),fill=(255,0,0,128))
draw.rectangle((400,400,600,600),fill=(255,0,0))

im2=Image.new("RGBA",(800,800))
draw2=ImageDraw.Draw(im2)
draw2.rectangle((100,100,300,300),fill=(0,255,0,128))
draw2.rectangle((500,500,700,700),fill=(0,255,0))

#mergetwoimagesusingblend
blend=Image.blend(im,im2,0.5)
#drawf=ImageDraw.Draw(blend)
#drawf.rectangle((500,100,600,200),fill=(255,0,0))
#drawf.rectangle((600,200,700,300),fill=(0,255,0))
blend.save("/home/sylecn/d/blend.png")

#mergetwoimagesusingcomposite
ones=Image.new("RGBA",(800,800))
_draw=ImageDraw.Draw(ones)
_draw.rectangle((0,0,800,800),fill=(255,255,255,128))
final=Image.composite(im,im2,ones)
final.save("/home/sylecn/d/composite.png")


if__name__=='__main__':
main()

㈣ 如何用python画五一海报

要用Python画五一海报,需要用到Python的绘图库,比如matplotlib、Pillow等。以下是一个简单的例子,演示如何使用Python和Pillow库来制作五一海报:
from PIL import Image, ImageDraw, ImageFont

# 创建一个空白的画布,大小为800x600,背景色为白色

canvas = Image.new('RGB', (800, 600), (255, 255, 255))

# 在画布上添加五一节日祝福语

font = ImageFont.truetype('arial.ttf', 48) # 设置字体样式和大小

draw = ImageDraw.Draw(canvas)

draw.text((200, 100), '五一快乐!', fill=(0, 0, 0), font=font) # 设置文字位置、颜色和字体

# 在画布上添加五星红旗图案

flag = Image.open('flag.png') # 读取五星红旗图片

flag = flag.resize((200, 133)) # 设置图凯隐片大小为200x133

canvas.paste(flag, (300, 300)) # 将图片粘贴到画布上

# 保存并展示画布

canvas.save('mayday.png')

canvas.show()
在这个例子中,我们首先使用Pillow库创建了一个800x600大小的空白画布,并在画布上添橘山加了五一节日祝福语和五星红旗图案。最后使用save()方法将画布保存为PNG格式的图片,并使用show()方法展示图片。在实际操作中,您需要根据自己圆孙中的需求来修改代码,比如更换祝福语、调整字体大小和颜色、更换图片等。

㈤ python的pillow用ImageDraw.Draw.polygon如何填充半透明的颜色

你好!
请组织好您的语言
仅代表个人观点,不喜勿喷,谢谢。

㈥ python如何生成1位图片bin

第一步,定义一个变量n1并赋值为987,调用bin函数将n1转换成二进制,
第二步,再次定义一个变量n2并赋值一个长整型,使用bin函数转换,第三步,如果传入的参数是一个逻辑值或是一个字符串,使用bin函数返回什么结果,第四步,定义一个列表变量n4,并进行赋值;然后调用bin函数困段猜,结果发现出现了报错,第五步燃御,如果传入的参数是一个负数,使汪型用bin函数转换之后,对应的结果也为负数,第六步,定义变量n6,并进行赋值为0,结果发现返回的值也是0,并且是二进制数,注意事项
注意python语言中的bin函数的用法
注意bin函数的传入参数和返回值

㈦ python 怎样把一行中文添加到图片上面比如在下面图片上写一行字

#font=ImageFont.truetype("C:/Windows/Fonts/simsunb.ttf",20)
font=ImageFont.truetype('simsun.ttc',24)
im=Image.open('F:one'+time+'.jpg')
draw=ImageDraw.Draw(im)
text=unicode('你好','utf-8')
draw.text((20,20),text,font=font,fill=(0,0,0,0))
im.save('F:/'+time+'.jpg')

㈧ python PIL ImageDraw text 文本居中

字符宽度本来就很难。这个是难题。因为字符宽度不一致。 通常我们的做法是这样子。

你先在后面的画板上画一个字符串,然后测量它的宽度。再根据测量得到的宽度正式在你想绘制的画板上绘。

这个测量也是用它的API实现的。不是自己用尺子量。

另外一个办法是手机上用的。 每个字体的每个字符的长宽都有精准的数据。做一个这样的数据库。然后绘制前计算一下,就可以居中了。

㈨ python如何画弧线,并设置颜色....最好用graphics库,,,或者Tkinter实在不行的话

在graphics中没有找到画弧线的方法,你是要将弧线画在什么地方呢?
可以使用PIL库来实现,先下载安装一下PIL(Python Imaging Library)库,然后运行下面代码:
# -*- coding: cp936 -*-
from PIL import Image, ImageDraw
im = Image.new('RGBA', (200,200) ) #建立一块200*200像素的画布(im)
draw = ImageDraw.Draw(im) #在画布上准备好“笔”(draw)
draw.arc((50, 50, 150, 150), 100,300, fill="#00ffff") #在画布上用“笔”画一段弧线
#(50, 50, 150, 150)是指这个圆在画布上左上角(50,50)右下角(150,150)的方框内;即是以(100,100)为圆心,50为半径的圆。
#100,300 表示这段弧是在上述圆的角度100度到300度之间
#fill="#00ffff" 表示设置的颜色
im.show() #将图像显示出来
im.save('1.png') #也可以将图像保存到指定路径

以上代码在python2.6环境中测试可用。
希望对你有所帮助~~~

㈩ Python:这有可能是最详细的PIL库基本概念文章了

PIL有如下几个模块:Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance模块、ImageFile模块、ImageFileIO模块、ImageFilter模块、ImageFont模块、ImageGrab模块、ImageOps模块、ImagePath模块、ImageSequence模块、ImageStat模块、ImageTk模块、ImageWin模块、PSDraw模块

啊啊啊啊怎么这么多模块啊~~~!!!!

别担心我为你一一讲解

Image模块提供了一个相同名称的类,即image类,用于表示PIL图像。

Image模块是PIL中最重要的模块 ,比如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等。

Image模块的使用如下:

ImageChops模块包含一些算术图形操作,这些操作可用于诸多目的,比如图像特效,图像组合,算法绘图等等,通道操作只用于8位图像。

ImageChops模块的使用如下:

由于图像im_p是im的复制过来的,所以它们的差为0,图像im_diff显示时为黑图。

ImageCrackCode模块允许用户检测和测量图像的各种特性。 这个模块只存在于PIL Plus包中。

因为我目前安装的PIL中没有包含这个模块。所以就不详细介绍了

ImageDraw模块为image对象提供了基本的图形处理功能。 例如,它可以创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形。

ImageDraw模块的使用如下:

在del draw前后显示出来的图像im是完全一样的,都是在原有图像上画了两条对角线。

原谅我的报错

ImageEnhance模块包括一些用于图像增强的类。它们分别为 Color类、Brightness类、Contrast类和Sharpness类。

ImageEnhance模块的使用如下:

图像im0的亮度为图像im的一半。

ImageFile模块为图像打开和保存功能提供了相关支持功能。另外,它提供了一个Parser类,这个类可以一块一块地对一张图像进行解码(例如,网络联接中接收一张图像)。这个类的接口与标准的sgmllib和xmllib模块的接口一样。

ImageFile模块的使用如下:

因为所打开图像大小大于1024个byte,所以报错:图像不完整。

所以大家想看的可以自行去找一个小一点的图看一下

ImageFileIO模块用于从一个socket或者其他流设备中读取一张图像。 不赞成使用这个模块。 在新的code中将使用ImageFile模块的Parser类来代替它。

ImageFilter模块包括各种滤波器的预定义集合,与Image类的filter方法一起使用。该模块包含这些图像增强的滤器:BLUR,CONTOUR,DETAIL,EDGE_ENHANCE,EDGE_ENHANCE_MORE,EMBOSS,FIND_EDGES,SMOOTH,SMOOTH_MORE和SHARPEN。

ImageFilter模块的使用如下:

ImageFont模块定义了一个同名的类,即ImageFont类。这个类的实例中存储着bitmap字体,需要与ImageDraw类的text方法一起使用。

PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(Xwindow字体格式)转换为这种格式。

PIL Plus包中才会支持矢量字体。

ImageGrab模块用于将屏幕上的内容拷贝到一个PIL图像内存中。 当前的版本只在windows操作系统上可以工作。

ImageGrab模块的使用如下:

图像im显示出笔记本当前的窗口内容,就是类似于截图的工具

ImageOps模块包括一些“ready-made”图像处理操作。 它可以完成直方图均衡、裁剪、量化、镜像等操作 。大多数操作只工作在L和RGB图像上。

ImageOps模块的使用如下:

图像im_flip为图像im垂直方向的镜像。

ImagePath模块用于存储和操作二维向量数据。Path对象将被传递到ImageDraw模块的方法中。

ImagePath模块的使用如下:

ImageSequence模块包括一个wrapper类,它为图像序列中每一帧提供了迭代器。

ImageSequence模块的使用如下:

后面两次show()函数调用,分别显示第1张和第11张图像。

ImageStat模块计算一张图像或者一张图像的一个区域的全局统计值。

ImageStat模块的使用如下:

ImageTk模块用于创建和修改BitmapImage和PhotoImage对象中的Tkinter。

ImageTk模块的使用如下:

这个是我一直不太懂的有没有大佬能帮我解决一下在线等~急!

PSDraw模块为Postscript打印机提供基本的打印支持。用户可以通过这个模块打印字体,图形和图像。

PIL中所涉及的基本概念有如下几个: 通道(bands)、模式(mode)、尺寸(size)、坐标系统(coordinate system)、调色板(palette)、信息(info)和滤波器(filters)。

每张图片都是由一个或者多个数据通道构成。PIL允许在单张图片中合成相同维数和深度的多个通道。

以RGB图像为例,每张图片都是由三个数据通道构成,分别为R、G和B通道。而对于灰度图像,则只有一个通道。

对于一张图片的通道数量和名称,可以通过getbands()方法来获取。getbands()方法是Image模块的方法,它会返回一个字符串元组(tuple)。该元组将包括每一个通道的名称。

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

getbands()方法的使用如下:

图像的模式定义了图像的类型和像素的位宽。当前支持如下模式:

1:1位像素,表示黑和白,但是存储的时候每个像素存储为8bit。

L:8位像素,表示黑和白。

P:8位像素,使用调色板映射到其他模式。

I:32位整型像素。

F:32位浮点型像素。

RGB:3x8位像素,为真彩色。

RGBA:4x8位像素,有透明通道的真彩色。

CMYK:4x8位像素,颜色分离。

YCbCr:3x8位像素,彩色视频格式。

PIL也支持一些特殊的模式,包括RGBX(有padding的真彩色)和RGBa(有自左乘alpha的真彩色)。

可以通过mode属性读取图像的模式。其返回值是包括上述模式的字符串。

mode 属性 的使用如下:

通过size属性可以获取图片的尺寸。这是一个二元组,包含水平和垂直方向上的像素数。

mode属性的使用如下:

PIL使用笛卡尔像素坐标系统,坐标(0,0)位于左上角。注意:坐标值表示像素的角;位于坐标(0,0)处的像素的中心实际上位于(0.5,0.5)。

坐标经常用于二元组(x,y)。长方形则表示为四元组,前面是左上角坐标。例如:一个覆盖800x600的像素图像的长方形表示为(0,0,800,600)。

调色板模式 ("P")使用一个颜色调色板为每个像素定义具体的颜色值

使用info属性可以为一张图片添加一些辅助信息。这个是字典对象。加载和保存图像文件时,多少信息需要处理取决于文件格式。

info属性的使用如下:

对于将多个输入像素映射为一个输出像素的几何操作,PIL提供了4个不同的采样滤波器:

NEAREST:最近滤波。 从输入图像中选取最近的像素作为输出像素。它忽略了所有其他的像素。

BILINEAR:双线性滤波。 在输入图像的2x2矩阵上进行线性插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。

BICUBIC:双立方滤波。 在输入图像的4x4矩阵上进行立方插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。

ANTIALIAS:平滑滤波。 这是PIL 1.1.3版本中新的滤波器。对所有可以影响输出像素的输入像素进行高质量的重采样滤波,以计算输出像素值。在当前的PIL版本中,这个滤波器只用于改变尺寸和缩略图方法。

注意:在当前的PIL版本中,ANTIALIAS滤波器是下采样 (例如,将一个大的图像转换为小图) 时唯一正确的滤波器。 BILIEAR和BICUBIC滤波器使用固定的输入模板 ,用于固定比例的几何变换和上采样是最好的。Image模块中的方法resize()和thumbnail()用到了滤波器。

resize()方法的定义为:resize(size, filter=None)=> image

resize()方法的使用如下:

对参数filter不赋值的话,resize()方法默认使用NEAREST滤波器。如果要使用其他滤波器可以通过下面的方法来实现:

thumbnail ()方法的定义为:im.thumbnail(size, filter=None)

thumbnail ()方法的使用如下:

这里需要说明的是,方法thumbnail()需要保持宽高比,对于size=(200,200)的输入参数,其最终的缩略图尺寸为(182, 200)。

对参数filter不赋值的话,方法thumbnail()默认使用NEAREST滤波器。如果要使用其他滤波器可以通过下面的方法来实现:

阅读全文

与imagedrawpython相关的资料

热点内容
splitjava空格 浏览:248
电脑怎么谷歌服务器地址 浏览:515
nx自定义工具启动宏命令 浏览:101
程序员怎么解决无法访问互联网 浏览:303
java访问本地文件 浏览:747
瓦斯琪服务器怎么用 浏览:22
安卓主题用什么app 浏览:747
修改服务器pci地址空间 浏览:321
程序员将来去哪里 浏览:966
虚幻5创建c无法编译 浏览:189
javaweb项目设计 浏览:407
国家反诈app紧急联系人怎么填 浏览:191
单片机旋转led 浏览:340
杜洋单片机官网 浏览:467
法国加密货币税务 浏览:28
stringslinux 浏览:944
gis服务器里文件如何处理 浏览:829
sec加密数字资产 浏览:930
winrar命令行压缩 浏览:790
java成员变量默认 浏览:491