導航:首頁 > 編程語言 > 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相關的資料

熱點內容
哪個app聽音樂最好 瀏覽:281
考研英語2真題pdf 瀏覽:699
煙台編程積木教育環境好不好 瀏覽:214
python優秀代碼 瀏覽:620
androidtop命令 瀏覽:455
你平時怎麼排解壓力 瀏覽:68
表格中的文件夾怎樣設置 瀏覽:476
em78單片機 瀏覽:960
splitjava空格 瀏覽:248
電腦怎麼谷歌伺服器地址 瀏覽:515
nx自定義工具啟動宏命令 瀏覽:101
程序員怎麼解決無法訪問互聯網 瀏覽:303
java訪問本地文件 瀏覽:747
瓦斯琪伺服器怎麼用 瀏覽:22
安卓主題用什麼app 瀏覽:747
修改伺服器pci地址空間 瀏覽:321
程序員將來去哪裡 瀏覽:966
虛幻5創建c無法編譯 瀏覽:189
javaweb項目設計 瀏覽:407
國家反詐app緊急聯系人怎麼填 瀏覽:191