1. 程式人生 > 程式設計 >使用Python合成圖片的實現程式碼(圖片添加個性化文字,圖片上疊加其他圖片)

使用Python合成圖片的實現程式碼(圖片添加個性化文字,圖片上疊加其他圖片)

1.業務需求背景

業務提供一張底層圖片1以及需要在底層圖片上新增的圖片2,兩張圖片大小不一致,將小圖2新增到底圖1中,並在其他的空白部分添加個性化的文字資訊

2.圖片處理邏輯

在底層圖片上新增文字資訊,圖片另存到一個新的路徑,命名為圖3
將圖3和圖2合併,處理位置資訊,透明率等,將處理完成之後的圖片另存到新的路徑,命名為圖4

3.程式碼處理部分

3.1 圖片上新增文字資訊

from PIL import Image,ImageDraw,ImageFont
# 底圖新增字型文字

im = Image.open("./底圖.png").convert('RGBA')

# 檢視原圖的大小
print(im.mode,im.size) 
# 生成與原圖大小完全一致的新圖片,設定為完全透明
txt=Image.new('RGBA',im.size,(0,0)) 
# 設定字型,字號
fnt=ImageFont.truetype(r"C:\Windows\Fonts\STXINWEI.TTF",50)
d=ImageDraw.Draw(txt)
# 拼接需要在圖片上填寫的文字
name = "李敏"
date_today = "2020-04-28"
a = """
  親愛的{0}:
      叮。
      確認收貨:專屬生日祝福!
      快樂屬於您,幸福屬於您!
      溫馨屬於您,好運屬於您!
      工作在忙碌,本能照顧您!
                
                \r\r\r\rXX部門
                \r\r\r\r{1}          
""".format(name,date_today)
# 設定字型資訊所在的位置,寫入的資訊,顏色
d.text((txt.size[0]-950,txt.size[1]-1300),a,font=fnt,fill=(28,28,255))
# 儲存新的圖片
out=Image.alpha_composite(im,txt)
out.save(r"NEW-1.png")

3.2 兩張大小不一致的圖片重疊

import cv2
import numpy as np
import matplotlib.pyplot as plt
import os
from PIL import Image,ImageFont
# 讀取兩張圖片資訊
os.chdir('E:\RPA\生日賀卡')
bear = cv2.imread('./baiyang+gou.png')
sky = cv2.imread('./NEW-1.png')
"""
bear 小圖
sky  大圖
"""
# 根據小影象的大小,在大影象上建立感興趣區域roi(放置位置任意取)
rows,cols = bear.shape[:2] #獲取bear的高度、寬度
roi = sky[0:rows,0:cols]

dst = cv2.addWeighted(bear,1,roi,0) #影象融合,設定透明度,大小等
add_img = sky.copy() #對原影象進行拷貝
add_img[800:rows+800,75:cols+75] = dst # 將融合後的區域放進原圖,可通過改數值修改位置
# 讀取融合之後的圖片資料(資料型別為dateframe物件)
ret = cv2.cvtColor(add_img,cv2.COLOR_BGR2RGB)

im = Image.fromarray(ret)
im.save("./完整圖.png")
print("圖片儲存完成")

到此這篇關於使用Python合成圖片的實現程式碼(圖片添加個性化文字,圖片上疊加其他圖片)的文章就介紹到這了,更多相關Python合成圖片內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!