Python基礎之PIL pillow 模組例項

2021-08-21 20:36:50 字數 2767 閱讀 5835

pillow模組內容繁雜,因此使用例項展示內容

c:\windows\system32>pip list

deprecation: the default format will switch to columns in the future. you can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.

asn1crypto (0.24.0)

cffi (1.11.5)

cryptography (2.2.2)

idna (2.7)

pillow (5.2.0)

pip (9.0.1)

pycparser (2.18)

pygame (1.9.3)

pymysql (0.9.2)

setuptools (28.8.0)

six (1.11.0)

##2. 驗證碼生成例項

from pil import image, imagedraw, imagefont

import random

# 新增字母

def creatimg(width,height):

# 偏移量x

global x

# 建立新的畫布,透明度為完全透明

img = image.new("rgba", (width, height), (0, 0, 0, 0))

# 建立畫筆

draw = imagedraw.draw(img)

font = imagefont.truetype("img/code1.ttf", 50)

# 建立隨機字母並新增至列表

char = chr(random.randint(65, 91))

# 將字母隨機寫入畫布中的指定範圍內

draw.text((x, random.randint(10, 15)), char, font=font, fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))

# 隨機旋轉[-10,10]度

img = img.rotate(random.randint(-10, 10))

# 下乙個字元為偏移量

x += 50

return img

# 新增隨機點

def addpoint(img):

# 獲取寬高

width, height = img.size

# 隨機新增1000個隨機顏色的點

for i in range(1000):

img.putpixel((random.randint(0, width-1), random.randint(0, height-1)), (random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)))

return img

# 建立最底層畫布

code = image.new("rgba", (200, 100), (255, 255, 255, 255))

# 獲取畫布尺寸

w, h = code.size

# 建立空列表存放驗證字元

codelist =

# 根據x判定字母偏移量,起始位置為0

x = 0

# 迴圈建立隨機字元並與底層畫布合併

for i in range(4):

img = creatimg(w, h)

code = image.alpha_composite(code, img)

# 增加隨機點

code = addpoint(code)

# 展示驗證碼

code.show()

# 輸出驗證字元列表

print(codelist)

##3. 鑑黃(簡易)

from pil import image

# 開啟

# 將模式轉化為ycbcr,y代表亮度,cb代表藍色濃度偏移量,cr代表紅色濃度偏移量

img = img.convert("ycbcr")

# 獲取影象大小

w, h = img.size

# 設定**初始值

skin = 0

# 遍歷影象中每乙個畫素

for m in range(w):

for n in range(h):

# 獲取該畫素的ycbcr

y, cb, cr = img.getpixel((m, n))

# 根據公式判斷是否為裸露的**,如果是則**值+1

if 77 <= cb <= 127 and 133 <= cr <= 173:

skin += 1

# 遍歷完成後判定是否**值佔總畫素的40%以上,如果是則為不健康的(〃ノωノ)

if skin > (w * h) * 0.4:

print("黃圖,禁了!")

else:

print("下乙個!")

注:本例項根據某**提供公式判定,但經過實測,如果使用本例項進行鑑黃,****都有可能被認為是黃圖( ̄ω ̄;)

python基礎之語句 Python基礎之條件語句

我們在程式設計中經常需要通過檢查某個條件,從而決定去做什麼。條件語句就是針對這一情景應用的。本篇主要介紹 if 和 while。一 if語句 先來個總覽 if 條件一 條件一對應的 塊 elif 條件二 條件一對應的 塊 else 不滿足條件一和條件二對應的 塊 if 語句的核心就是值為true 或...

Python程式設計基礎之Python基礎

1.只能是乙個詞 2.包含字母,數字和下劃線 3.不能以數字開頭 this program syas hello and asks for your name print hello world1 print what is your name?ask for their name myname i...

python基礎之python介紹

一 python介紹 python的主要應用領域 哪些公司正在應用 cia 美國中情局 就是用python開發的 nasa 美國航天局 nasa 大量使用python進行資料分析和運算 facebook 大量的基礎庫均通過python實現的 redhat 世界上最流行的linux發行版本中的yum包...