使用Python合成圖片(圖片添加個性化文本,圖片上疊加其他圖片)


1.業務需求背景

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

2.圖片處理邏輯

  1. 在底層圖片上添加文本信息,圖片另存到一個新的路徑,命名為圖3
  2. 將圖3和圖2合並,處理位置信息,透明率等,將處理完成之后的圖片另存到新的路徑,命名為圖4

3.代碼處理部分

3.1 圖片上添加文本信息

 1 from PIL import Image,ImageDraw,ImageFont
 2 # 底圖添加字體文本
 3 
 4 im = Image.open("./底圖.png").convert('RGBA')
 5 
 6 # 查看原圖的大小
 7 print(im.mode,im.size) 
 8 # 生成與原圖大小完全一致的新圖片,設定為完全透明
 9 txt=Image.new('RGBA', im.size, (0,0,0,0)) 
10 # 設置字體,字號
11 fnt=ImageFont.truetype(r"C:\Windows\Fonts\STXINWEI.TTF", 50)
12 d=ImageDraw.Draw(txt)
13 # 拼接需要在圖片上填寫的文本
14 name = "李敏"
15 date_today = "2020-04-28"
16 a = """
17     親愛的{0}:
18             叮。
19             確認收貨:專屬生日祝福!
20             快樂屬於您,幸福屬於您!
21             溫馨屬於您,好運屬於您!
22             工作在忙碌,本能照顧您!
23                                 
24                                \r\r\r\rXX部門
25                                \r\r\r\r{1}                   
26 """.format(name,date_today)
27 # 設置字體信息所在的位置,寫入的信息,顏色
28 d.text((txt.size[0]-950,txt.size[1]-1300),a,font=fnt,fill=(28,28,28,255))
29 # 保存新的圖片
30 out=Image.alpha_composite(im,txt)
31 out.save(r"NEW-1.png")

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

 1 import cv2
 2 import numpy as np
 3 import matplotlib.pyplot as plt
 4 import os
 5 from PIL import Image,ImageDraw,ImageFont
 6 # 讀取兩張圖片信息
 7 os.chdir('E:\RPA\生日賀卡')
 8 bear = cv2.imread('./baiyang+gou.png')
 9 sky = cv2.imread('./NEW-1.png')
10 """
11 bear  小圖
12 sky   大圖
13 """
14 # 根據小圖像的大小,在大圖像上創建感興趣區域roi(放置位置任意取)
15 rows, cols = bear.shape[:2] #獲取bear的高度、寬度
16 roi = sky[0:rows, 0:cols]
17 
18 dst = cv2.addWeighted(bear,1,roi,0,0) #圖像融合,設置透明度,大小等
19 add_img = sky.copy() #對原圖像進行拷貝
20 add_img[800:rows+800, 75:cols+75] = dst  # 將融合后的區域放進原圖,可通過改數值修改位置
21 # 讀取融合之后的圖片數據(數據類型為dateframe對象)
22 ret = cv2.cvtColor(add_img,cv2.COLOR_BGR2RGB)
23 
24 im = Image.fromarray(ret)
25 im.save("./完整圖.png")
26 print("圖片保存完成")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM