給圖片新增文字
阿新 • • 發佈:2022-04-20
import glob import os from PIL import Image,ImageDraw,ImageFont import cv2 from PIL import Image, ImageFont, ImageDraw import numpy as np #讀取圖片並寫入文字 def wirte_text_to_pic(text,pic_path): img = Image.open(pic_path) w,h = img.size draw = ImageDraw.Draw(img) font = ImageFont.truetype('georgia.ttf',size=20,encoding="utf-8") txtW,txtH = draw.textsize(text,font=font) draw.text((w-txtW-5,h-txtH-2),text=text,fill=(20,200,100,166),font=font) savename = pic_path img.save(savename) #讀取圖片並寫入文字 def wirte_text_to_pic_two(text,pic_path): print("text:") print(text) print("pic_path") print(pic_path) img1 = cv2.imread(pic_path, cv2.IMREAD_COLOR) pil_image = Image.fromarray(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)) w,h = pil_image.size font = ImageFont.truetype('simhei.ttf', 50, encoding="utf-8") color = (255, 10, 255) pos = (w/8, h/4*3) text= text draw = ImageDraw.Draw(pil_image) draw.text(pos, text, font=font, fill=color) cv_img = cv2.cvtColor(np.asarray(pil_image), cv2.COLOR_RGB2BGR) # cv2.imshow(pic_path, cv_img) #xianshi cv2.waitKey(0) cv2.imwrite(pic_path,cv_img) #儲存圖片 #獲取所有檔案 def get_file_name(file_dir): li = [] for root, dirs, files in os.walk(file_dir): print("files:") print(files) for file in files: if os.path.splitext(file)[1] == '.jpg': li.append(os.path.join(root, file)) print("li:") print(li) return li #讀取english.txt檔案 with open("D:\PycharmProjects\cigenpic\english.txt",encoding="utf-8",mode='r') as f: cigen_list = f.readlines() print(cigen_list) #讀取picture檔案 WSI_MASK_PATH = 'D:\PycharmProjects\cigenpic\picture'#存放圖片的資料夾路徑 print(os.path.join(WSI_MASK_PATH, '*.jpg')) wsi_mask_paths_list = glob.glob(os.path.join(WSI_MASK_PATH, '*.jpg')) print(wsi_mask_paths_list) wsi_mask_paths_list.sort() print(wsi_mask_paths_list) def read_file(file_name): with open("D:\PycharmProjects\cigenpic\english.txt", encoding="utf-8", mode='r') as f: cigen_list = f.readlines() print("cigen_list:") print(cigen_list) cigen_list_len = len(cigen_list) return cigen_list def get_all_pic_path(WSI_MASK_PATH): # 讀取picture檔案 WSI_MASK_PATH = 'D:\PycharmProjects\cigenpic\picture' # 存放圖片的資料夾路徑 print(os.path.join(WSI_MASK_PATH, '*.jpg')) wsi_mask_paths_list = glob.glob(os.path.join(WSI_MASK_PATH, '*.jpg')) print(wsi_mask_paths_list) wsi_mask_paths_list.sort() print(wsi_mask_paths_list) return wsi_mask_paths_list def get_new_picture(file_name,pic_dir,copy_pic_dir): cigen_list = read_file(file_name=file_name) cigen_list_len = len(cigen_list) li = [] for root, dirs, files in os.walk(top=pic_dir): file_list = files print("file_list:") print(file_list) for file in files: if os.path.splitext(file)[1] == '.jpg': li.append(os.path.join(root, file)) print("li:") print(li) for i in range(0,len(li)): #rb,二進位制讀取檔案 with open(file=li[i],mode="rb") as f: data = f.read() wirte_pic_path = copy_pic_dir+"\\"+file_list[i] with open(file=wirte_pic_path,mode="wb") as f: f.write(data) if i < cigen_list_len: text = cigen_list[i] pic_path= wirte_pic_path wirte_text_to_pic_two(text, pic_path) else: shang = i // cigen_list_len print("shang:") print(shang) yushu = i % cigen_list_len print("yushu:") print(yushu) text = cigen_list[yushu] pic_path= wirte_pic_path wirte_text_to_pic_two(text, pic_path) file_name = r"D:\PycharmProjects\cigenpic\english.txt" pic_dir=r"D:\PycharmProjects\cigenpic\picture" copy_pic_dir=r"D:\PycharmProjects\cigenpic\engpic" get_new_picture(file_name,pic_dir,copy_pic_dir)