python學習(十九)常見的第三方庫


原文鏈接:http://www.limerence2017.com/2017/12/28/python19/#more

介紹幾個python中常見的第三方庫.

Pillow

Pillow簡稱PIL,是python中常用的圖形圖像處理模塊。寫一個簡單的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from PIL import Image, ImageFilter
# 打開一個jpg圖像文件,注意是當前路徑:
im = Image.open('test.jpg')
#獲取圖片大小
w,h = im.size
print('Original image size : width:%d height: %d' %(w,h))

#圖片縮放
im.thumbnail((w//2, h//2))

print('Resize image to: %dx%d' % (w//2, h//2))
# 把縮放后的圖像用jpeg格式保存:
im.save('test2.jpg', 'jpeg')


# 打開一個jpg圖像文件,注意是當前路徑:
im = Image.open('test.jpg')
# 應用模糊濾鏡:
im2 = im.filter(ImageFilter.BLUR)
im2.save('blur.jpg', 'jpeg')

im2 = im.filter(ImageFilter.CONTOUR)
im2.save('contour.jpg','jpeg')

 

Image.open函數打開一張圖片,然后調用thumbnail進行縮放,調用save進行存儲。filter函數
為濾鏡函數,可以匹配不同的濾鏡模式,如模糊,邊界效果等等。
原圖:
test.jpg
通過濾鏡模糊模式:
blur.jpg
通過濾鏡邊界模式:
contour.jpg

下面利用PIL庫實現一個生成驗證碼的小程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random

#隨機大寫字母:
def rndChar():
return chr(random.randint(65,90))
#隨機顏色1:
def rndColor():
return(random.randint(64,255), random.randint(64,255), random.randint(64,255))
#隨機顏色2:
def rndColor2():
return(random.randint(32,127), random.randint(32,127), random.randint(32,127))


#240*60
width = 60*4
height = 60
#Image.new(mode, size, color=None)
image = Image.new('RGB',(width,height), (255,255,255))
#創建Font對象
font = ImageFont.truetype('C:\\WINDOWS\\Fonts\\SIMYOU.TTF',36)
# 創建draw對象並和image綁定
#用於以后繪制像素點和文本
draw = ImageDraw.Draw(image)
#通過像素點繪制填充圖片
for x in range(width):
for y in range(height):
draw.point((x,y),fill=rndColor())

#繪制字母
for t in range(4):
draw.text((60*t+10,10),rndChar(),font=font, fill=rndColor2())
#模糊處理
#image = image.filter(ImageFilter.BLUR)
image.save('code.jpg','jpeg')

 

chardet檢測編碼

1
2
3
4
5
6
7
8
9
10
11
import chardet
rs = chardet.detect(b'Hello, world!')
print(rs)

data = '江船火獨明'.encode('gb2312')
rs = chardet.detect(data)
print(rs)

data2 = '此情可待成追憶'.encode('utf-8')
rs2 = chardet.detect(data2)
print(rs2)

用chardet可以判斷編碼方式,在不知道字節是按照什么格式編碼時可以采用chardet。

tkinter 制作GUI界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from tkinter import *

class Application(Frame):
def __init__(self, master = None):
Frame.__init__(self,master)
self.pack()
self.createWidgets()

def createWidgets(self):
self.helloLabel = Label(self, text='Hello, world!')
self.helloLabel.pack()
self.quitButton = Button(self, text = 'Quit', command=self.quit)
self.quitButton.pack()

app = Application()
# 設置窗口標題:
app.master.title('Hello World')
# 主消息循環:
app.mainloop()

pack()方法是將Widgets對象加載到父容器中。
具體的API讀者可以查看手冊。這些第三方庫用到的時候再具體學習即可。

我的公眾號,謝謝關注:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM