python 图片处理 根据4个坐标围成的区域填充颜色,并填入文字,简单案例

运行环境:python3.6

第三方库:PIL (安装命令:pip install pillow)

该项目主要目的:将图中中文替换成英文

案例图片:

python 图片处理 根据4个坐标围成的区域填充颜色,并填入文字,简单案例_第1张图片

                                                            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]}

大致思路:

第一步:将该文字区域填充成背景色。

第二部:在该区域填入对应的英文

 

填充背景色效果图:

python 图片处理 根据4个坐标围成的区域填充颜色,并填入文字,简单案例_第2张图片

填入英文效果图如下:

python 图片处理 根据4个坐标围成的区域填充颜色,并填入文字,简单案例_第3张图片

                                                            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

 

你可能感兴趣的:(python,图片处理)