1. 程式人生 > >20170511 Python練習冊0000 將頭像右上角加上紅色的數字

20170511 Python練習冊0000 將頭像右上角加上紅色的數字

figure 服務 .com 1.5 open 保存圖片 lan 顯卡驅動 type()

現在開始每天做一個Python小練習,第一個練習

#!/usr/bin/env python
#-*- coding:utf8 -*-
from PIL import Image, ImageDraw, ImageFont
def add_num(img):
draw = ImageDraw.Draw(img)#創建一個可用來對img進行操作的對象,即創建繪畫對象
myfont = ImageFont.truetype(‘C:/windows/fonts/Arial.ttf‘, size=40)#加載一個TrueType的字體文件,並且創建一個字體對象
fillcolor = "#ff0000" #填充顏色>>>紅色
width, height = img.size #獲取圖片的長和寬
draw.text((width-40, 0),‘99‘, font=myfont, fill=fillcolor)
#drawObject.text(position,string,options)在圖像內添加文字
#Position是一個二元元組,指定字符串左上角坐標,string是要寫入的字符串
#options選項可以為fill或者font(只能選擇其中之一作為第三參量,不能兩個同同時存在,其中fill指定字的顏色,
# font指定字體與字的尺寸,font必須為ImageFont中指定的font類型,具體用法見ImageFont.Truetype()
img.save(‘result.jpg‘,‘jpeg‘)#保存圖片,並改變格式
return 0
if __name__ == ‘__main__‘:
image = Image.open(‘D:\image.jpg‘)#打開文件
add_num(image)#調用函數

需要用到的知識有:轉載自:http://www.cnblogs.com/denny402/p/5096001.html

一、圖片的打開與顯示

from PIL import Image
img=Image.open(‘d:/dog.png‘)
img.show()

雖然使用的是Pillow,但它是由PIL fork而來,因此還是要從PIL中進行import. 使用open()函數來打開圖片,使用show()函數來顯示圖片。

這種圖片顯示方式是調用操作系統自帶的圖片瀏覽器來打開圖片,有些時候這種方式不太方便,因此我們也可以使用另上一種方式,讓程序來繪制圖片。

from PIL import Image
import matplotlib.pyplot as plt
img=Image.open(‘d:/dog.png‘)
plt.figure("dog")
plt.imshow(img)
plt.show()
這種方法雖然復雜了些,但推薦使用這種方法,它使用一個matplotlib的庫來繪制圖片進行顯示。

figure默認是帶axis的,如果沒有需要,我們可以關掉

plt.axis(‘off‘)

打開圖片後,可以使用一些屬性來查看圖片信息,如

print img.size  #圖片的尺寸
print img.mode  #圖片的模式
print img.format  #圖片的格式

顯示結果為:

(558, 450)
RGBA
PNG

二、圖片的保存

img.save(‘d:/dog.jpg‘)

就一行代碼,非常簡單。這行代碼不僅能保存圖片,還是轉換格式,如本例中,就由原來的png圖片保存為了jpg圖片。

轉載自:http://www.2cto.com/kf/201603/491448.html

一、ImageFont模塊的函數

1、 Load

定義:ImageFont.load(file)? Font instance

含義:從指定的文件中加載一種字體,該函數返回對應的字體對象。如果該函數失敗,將產生IOError異常。

2、 Load_path

定義:ImageFont.load_path(file)? Font instance

含義:和函數load()一樣,但是如果沒有指定當前路徑的話,會從sys.path開始查找指定的字體文件。

3、 Truetype

定義1:ImageFont.truetype(file,size) ? Font instance

含義1:加載一個TrueType或者OpenType字體文件,並且創建一個字體對象。這個函數從指定的文件加載了一個字體對象,並且為指定大小的字體創建了字體對象。

在windows系統中,如果指定的文件不存在,加載器會順便看看windows的字體目錄下是否存在。

這個函數需要_imagingft服務。

定義2:ImageFont.truetype(file,size, encoding=value) ? Font instance

含義2:(New in 1.1.5)加載一個TrueType或者OpenType字體文件,並且使用指定的編碼方式創建一個字體對象。通常的編碼方式有“unic”(Unicode),“symb”(Microsoft Symbol),“ADOB”(Adobe Standard),“ADBE”(Adobe Expert)和“armn”(Apple Roman)。

下面的例子使用MicrosoftSymbol字體,即變量encoding為“symb”,在oxF000和0xF0FF之間繪制一個字符。

1 2 font = ImageFont.truetype("symbol.ttf", 16, encoding="symb") draw.text((0, 0), unichr(0xF000 + 0xAA))

4、 Load_default

定義:ImageFont.load_default()? Font instance

含義:(New in 1.1.4)加載一個默認的字體。

二、ImageFont模塊的方法

Font對象必須實現下面的方法,供ImageDraw層使用。

1、 Getsize

定義:font.getsize(text)? (width, height)

含義:返回給定文本的寬度和高度,返回值為2元組。

2、 Getmask

定義:font.getmask(text,mode=”“) ? Image object

含義:為給定的文本返回一個位圖。這個位圖是PIL內部存儲內存的實例(為Image.core接口模塊定義)。

如果字體使用了抗鋸齒,位圖的模式為“L”,且其最大值為255。否則,它的模式為“1”。

(New in 1.1.5)可選參數mode用於一些顯卡驅動指定自己喜歡的模式;如果為空,渲染器可能會返回任意模式。註意:該模式總是一個字符串。

三、ImageFont模塊的實例

1 2 3 4 5 6 7 8 9 10 11 12 13 14 >>> from PIL import Image, ImageDraw, ImageFont >>> im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg") >>> draw = ImageDraw.Draw(im02) >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 20) >>> draw.text((30,30), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = ‘red‘) >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 40) >>> draw.text((30,100), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = ‘green‘) >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 60) >>> draw.text((30,200), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = ‘blue‘) >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMLI.TTF", 40) >>> draw.text((30,300), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = ‘red‘) >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\STXINGKA.TTF", 40) >>> draw.text((30,400), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = ‘yellow‘) >>> im02.show()

在windows系統下,字體文件位於C:\Windows\Fonts文件夾下。本實例中用到的SIMYOU.TTF為幼圓字體文件,SIMLI.TTF為隸書字體文件,STXINGKA.TTF為行楷字體文件。用戶可以根據自己的需要,從Fonts文件夾下選擇所需字體文件。

字體的大小,可以根據定義字體時的第二個參數來設定。

本實例中圖像im02如下圖所示:

技術分享

20170511 Python練習冊0000 將頭像右上角加上紅色的數字