小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用Python批量給圖片添加文字

 hercules028 2022-07-11 發(fā)布于四川
excelperfect

標(biāo)簽:Python,Pillow
你知道Python可以幫助向圖像中添加文本嗎?雖然Python不是圖形編輯軟件,但它能夠很好地處理圖像文件。在本文中,將在多個圖像上放置一個示例文本“ExcelPerfect”。不用手動操作,也不用使用一些昂貴的軟件,可以使用Python輕易達(dá)到同樣的效果。
這里需要使用PILLOW庫(Python Imaging Library),使用pip命令安裝:
pip install Pillow
Pillow庫允許打開、修改和保存圖片文件。
要導(dǎo)入Pillow庫,需要使用:
import PIL
而不是:
import Pillow
我們將使用Pillow中的3個子模塊:
  • Image:用于打開和保存圖片文件的圖像文件類。
  • ImageDraw:用于創(chuàng)建新圖像的類,我們將使用它向圖片中添加文本。
  • ImageFont:文本字體。
讀取圖片文件到Python
首先,讀取圖片文件到Python
import PIL
from PIL import (Image,
ImageFont,
ImageDraw)
img = Image.open(r'D:\完美Excel\flower.jpg')
如果使用的是Jupyter Notebook的話,可以使用內(nèi)置函數(shù)display()notebook中顯示圖片,如下圖1所示。
圖片
1
字體
可以為添加到圖片中的文字選擇不同的字體。如果在Windows操作系統(tǒng)中,可以在Wondows搜索欄搜索“字體”,然后單擊“字體設(shè)置”。
在“字體設(shè)置”中,可以看到許多不同的字體,也能從網(wǎng)上下載新字體供后面使用。
這里想使用字體“Gill Sans”,能夠從設(shè)置中找到該字體文件的位置,如下圖2所示。
圖片
2
有了這個字體文件,現(xiàn)在可以創(chuàng)建一個字體對象,在Python中的圖像上部繪制。在下面的代碼行中:
1.第一個參數(shù)是字體文件的URL
2.第二個參數(shù)是字體大小。在這里使用的是30
font = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF',30)
Python Pillow:添加文本到圖片
現(xiàn)在需要創(chuàng)建一個ImageDraw對象來修改該圖像。下面的draw.text()接受以下參數(shù):
1.(10,10)–起始位置的(x,y)坐標(biāo)
2.font–剛剛創(chuàng)建的ImageFont
3.fill–文本的RGB顏色值(255表示白色,0表示黑色)
draw = ImageDraw.Draw(img)
draw.text((10,10),'ExcelPerfect', font = font, fill = (255, 255, 255))
注意,ImageDraw對象實際上修改了Image對象。為了顯示更新后的圖像,可以再次使用display(img)
圖片
3
將文本放置在左下角
要將文本放在右下角,需要做幾件事:
1.確定文本的大小,這應(yīng)該動態(tài)設(shè)置,因為每個圖像的大小不同。
2.此外,動態(tài)確定文本的起始(x,y)坐標(biāo)。由于圖像大小不同,坐標(biāo)會有所不同。
可以通過調(diào)用size屬性來獲得圖像(即畫布)的大小。在本例中,我們的圖像寬869像素,高633像素。
圖片
4
我們將設(shè)置文本大小,使整個文本行大約占圖像寬度的1/3。
ImageFont對象的默認(rèn)字體大小為10。要獲取文本尺寸(寬度和高度)并計算比例因子,執(zhí)行以下操作:
default_font_size = 10
text = 'ExcelPerfect'
text_width, text_height = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF').getsize(text)
img = Image.open(r'D:\完美Excel\flower.jpg')
img_width, img_height = img.size
scaler = img_width/3/text_width
scaler
如下圖5所示。
圖片
5
在這個例子中,scaler大約是3.5,這意味著我們的字體大小將是10*3.5=35。文本寬度和高度也將相應(yīng)縮放。
scale_text_font = int(default_font_size * scaler)
scale_text_width = int(scaler * text_width)
scale_text_height = int(scaler * text_height)
font = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF', size = scale_text_font)
draw = ImageDraw.Draw(img)
start_x = img_width - scale_text_width - 20
start_y = img_height - scale_text_height - 20
draw.text((start_x, start_y), text = text, font = font, fill = (255,255,255))
img.save(r'D:\完美Excel\flower_w_text.jpg')
結(jié)果如下圖6所示。
圖片
6
添加文件到多個圖片
要向多個圖像添加文本,讓我們將所有圖像放在同一個文件夾中。然后可以使用os.listdir()從該文件夾中獲取所有文件名,并處理每個文件。完整代碼如下:
import os
from PIL import (Image,
ImageFont,
ImageDraw)
default_font_size = 10
text = 'ExcelPerfect'
text_width, text_height = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF').getsize(text)
folder_path = r'D:\完美Excel\images'
for f in os.listdir(folder_path):
img = Image.open(rf'{folder_path}\{f}')
img_width, img_height = img.size
scaler = img_width/2/text_width
scale_text_font = int(default_font_size * scaler)
scale_text_width = int(scaler * text_width)
scale_text_height = int(scaler * text_height)
font = ImageFont.truetype(r'C:\WINDOWS\FONTS\GILSANUB.TTF', size = scale_text_font)
draw = ImageDraw.Draw(img)
start_x = img_width - scale_text_width - 20
start_y = img_height - scale_text_height - 20
draw.text((start_x, start_y), text = text, font = font, fill = (0,0,0))
file_name = f.split('.')[0] + '_w_text.jpg'
img.save(rf'{folder_path}\{file_name}')
注:本文學(xué)習(xí)整理自pythoninoffice.com,供有興趣的朋友學(xué)習(xí)參考。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多