您好,登錄后才能下訂單哦!
今天小編給大家分享一下怎么使用Python組合圖像和文本的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
1000x600 像素的圖像。
一些演示圖標 100x100 像素。
熟悉 Pipenv。
熟悉JupyterLab。
打開 安裝fonts/OpenSans-Bold.ttf.
讓我們創建hello-img-layers
目錄并安裝 Pillow。
# Make the `hello-img-layers` directory $ mkdir hello-img-layers $ cd hello-img-layers # Create a folder to place your icons $ mkdir icons # Init the virtual environment $ pipenv --three $ pipenv install pillow $ pipenv install --dev jupyterlab
在這個階段,將你的 1000x600 圖像添加到根目錄 ( hello-img-layers
) 作為base_img.png
(至少這是我使用的)并將你的 100x100 圖標添加到hello-img-layers/icons/
.# Startup the notebook server
$ pipenv run jupyter-lab # ... Server is now running on http://localhost:8888/lab
在http://localhost:8888/lab 上,選擇從啟動器創建一個新的 Python 3 筆記本。
確保此筆記本保存在hello-img-layers/docs/<your-file-name>
.
我們將創建四個單元來處理這個迷你項目的四個部分:
加載圖像。
創建目標圖像并添加圖標層。
創建文本層。
保存和顯示目標圖像。
本節只是在 var 中加載圖像base_img
(假如你遵循筆記本在docs
文件夾中的目錄結構)。
from PIL import Image
# Concatenating an image
base_img = Image.open('../base_img.png')
我們根據基本圖像的寬度和高度在此處創建目標圖層,然后將該基本圖像粘貼回。
然后我們使用 glob 庫來獲取我們圖標的所有路徑并將它們粘貼到基本圖像的頂部。
# Add in icons using a glob
import glob
from os.path import join, dirname, abspath
dst_img = Image.new('RGBA', (base_img.width, base_img.height))
dst_img.paste(base_img, (0, 0))
icons_dir = join(dirname(abspath("__file__")), '../icons')
icons = glob.glob(f"{icons_dir}/*")
for i, icon_path in enumerate(icons):
icon = Image.open(icon_path)
# @see https://stackoverflow.com/questions/5324647/how-to-merge-a-transparent-png-image-with-another-image-using-pil
dst_img.paste(icon, (60 + (i * icon.width) + (i * 20), base_img.height - 100 - icon.height), icon)
該層將加載我們的Open Sans
字體并將其繪制到圖像上。
在max_text_width=25
我這里選擇的是通過試驗和錯誤。對于不同大小的圖像,可能有一種更可重用的方法來處理此問題。
import os
# Add your own font in
font = ImageFont.truetype(os.path.join('fonts/OpenSans-Bold.ttf'), 58)
import textwrap
text = "Sample Text that is too long but let us write a bunch anyway"
print(dst_img.width)
max_text_width = 25
wrapped_text = textwrap.wrap(text, width=max_text_width)
# setup up a variable to invoke our text method
draw = ImageDraw.Draw(dst_img)
for i, line in enumerate(wrapped_text):
# draw.text((0, height - (i * 20)), line, (0, 0, 0), font=font)
draw.text((60, 100 + (i * 80)),line,(255,255,255),font=font)
最后,我們將保存并顯示我們的基本圖像。
dst_img.save('../dest_img.png')
# Display the image inline
display(Image.open('../dest_img.png'))
以上就是“怎么使用Python組合圖像和文本”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。