运行环境:python3.6
第三方库:PIL (安装命令:pip install pillow)
该项目主要目的:将图中中文替换成英文
案例图片:
444.png
图片中部分文字的坐标 字典数据:(图片左上角是原点(0,0),x轴是横轴,y轴是纵轴。)
dic={"尺码":[92,150,129,150,129,173,92,173], "衣长":[212,150,253,150,253,172,212,172], "肩宽":[329,150,370,150,370,173,329,173], "胸围":[450,150,485,150,485,174,450,174], "袖长":[574,149,610,149,610,173,574,173]}
大致思路:
第一步:将该文字区域填充成背景色。
第二部:在该区域填入对应的英文
填充背景色效果图:
填入英文效果图如下:
new444.png
完整代码如下:
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import os
# 找到文字区域,修改背景颜色,然后填写英文
def change_photo(all_lists,path_dir,filename):
# 拼接图片目录
path=os.path.join(path_dir,filename)
# 打开图片
img = Image.open(path)
# 图片宽度
width = img.size[0]
# 图片高度
height = img.size[1]
RGB_1 = []
RGB_2 = []
RGB_3 = []
for j in all_lists:
lists = all_lists[j]
# 获取第1个坐标的颜色RGBA的值
data1 = (img.getpixel((lists[0], lists[1])))
# 获取第2个坐标的颜色RGBA的值
data2 = (img.getpixel((lists[2], lists[3])))
# 获取第3个坐标的颜色RGBA的值
data3 = (img.getpixel((lists[4], lists[5])))
# 获取第4个坐标的颜色RGBA的值
data4 = (img.getpixel((lists[5], lists[7])))
#print(data1,data2,data3,data4)
RGB_1+=[data1[0],data2[0],data3[0],data4[0]]
RGB_2 += [data1[1], data2[1], data3[1], data4[1]]
RGB_3 += [data1[2], data2[2], data3[2], data4[2]]
# 按从小到大排序
RGB_1.sort()
RGB_2.sort()
RGB_3.sort()
# 取出颜色中间值
RGB_1=RGB_1[int(len(RGB_1)/2)]
RGB_2 = RGB_2[int(len(RGB_2) / 2)]
RGB_3 = RGB_3[int(len(RGB_3) / 2)]
# 组成最可能的背景色
RGB_data=(RGB_1,RGB_2,RGB_3)
# 根据背景色选择文字颜色
if (RGB_1 * 0.299 + RGB_2 * 0.578 + RGB_3 * 0.114) >= 192: #浅色
words_colour=(0,0,0) # 设置文字颜色为黑色
else:
words_colour=(255,255,255) # 设置文字颜色为白色
# 对每个坐标区域颜色修改-背景色
for i in all_lists:
lists=all_lists[i]
add_right_size = int((lists[7] - lists[1]) * 1/ 5)
lists[2] += add_right_size
lists[4] += add_right_size
for x in range(0,width):
for y in range(0,height):
if (x>lists[0] and y>lists[1]) and (xlists[3]) and (xlists[6] and y