標籤:字母 oss 矩形 座標系 dom random rndc 一半 .com
PIL:是Python Image Library的縮寫,影像處理的模組。Image,ImageFont,ImageDraw,ImageFilter
Image模組:
常用方法:
open() #開啟圖片new(mode,size,color) #建立新圖片save("test.gif","GIF") #儲存(新圖片路徑和名稱,儲存格式)size() #擷取圖片大小thumbnail(weight,high) #縮放圖片大小(寬,高)show() #顯示圖片blend(img1,img2,alpha) #兩張圖片相加,alpha表示img1和img2的比例參數。crop() #提取某個矩陣大小的映像。它接收一個四元素的元組作為參數,各元素為(left, upper, right, lower),座標系統的原點(0, 0)是左上方。rotate(45) #逆時針旋轉45度transpose() #旋轉映像 transpose(Image.FLIP_LEFT_RIGHT) #左右對換。 transpose(Image.FLIP_TOP_BOTTOM) #上下對換。 transpose(Image.ROTATE_90) #旋轉 90 度角。 transpose(Image.ROTATE_180) #旋轉 180 度角。 transpose(Image.ROTATE_270) #旋轉 270 度角。paste(im,box)#粘貼box大小的im到原先的圖片對象中。convert() #用來將映像轉換為不同色彩模式。filters() #濾鏡 BLUR #虛化 EMBOSSresize((128,128)) #resize成128*128像素大小convert("RGBA") #圖形類型轉換getpixel((4,4)) #擷取某個像素位置的值putpixel((4,4),(255,0,0)) #寫入某個像素位置的值
執行個體:
import Image,ImageFilterim = Image.open("E:\\QQ2.jpg") #開啟圖片w,h = im.size #擷取圖片的像素,其值為象素意義上的寬和高print(im.format) #擷取圖片格式print(im.size) #擷取圖片像素im.thumbnail((w//2,h//2)) #縮放圖片大小為原來的一半im.save("E:\\QQ_backup.jpg",‘jpeg‘) #儲存圖片,以及儲存格式為jpeg#im.show() #顯示圖片print(im.mode) #顯示模式。 RGB(true color image),此外還有,L(luminance),CMTK(pre-press image)。box = (100,100,200,200)s = im.crop(box) #映像中提取出某個矩形大小的映像。它接收一個四元素的元組作為參數,各元素為(left, upper, right, lower),座標系統的原點(0, 0)是左上方。#s.show()#s = s.transpose(Image.ROTATE_180) #旋轉180°#im.paste(s,box) #粘貼#im.show()im = Image.open("E:\\QQ2.jpg")im2 = im.filter(ImageFilter.EMBOSS)im2.save("E:\\QQ_2.jpg",‘jpeg‘)#im2.show()newImg = Image.new("RGBA",(640,480),(0,255,0)) #建立一張大小為640*480顏色為綠色的圖片newImg.save("E:\\newImg.png","PNG")
輸出結果為:
JPEG(640, 640)RGB
ImageFont模組:
常用方法:
ImageDraw模組:
執行個體:產生驗證碼
#!/usr/bin/env python# -*- coding:utf-8 -*-import Image, ImageDraw, ImageFont, ImageFilterimport 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 x 60:width = 60 * 4height = 60image = Image.new(‘RGB‘, (width, height), (255, 255, 255))# 建立Font對象:font = ImageFont.truetype("C:\\Windows\\Fonts\\Arial.ttf", 36) #注意系統字型的路徑# 建立Draw對象: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)im = image.save(‘code.jpg‘, ‘jpeg‘)m = Image.open(‘code.jpg‘)m.show()
輸出結果為:
Python模組:PIL