python去除特效文件黑色背景

首页 / 代码库 / 正文

lgjcj2m7.png
v2

import numpy as np
from PIL import Image
import os

def findfile(target_dir, target_suffix="all"):
    find_res = []
    target_suffix_dot = "." + target_suffix
    walk_generator = os.walk(target_dir)
    for root_path, dirs, files in walk_generator:
        if len(files) < 1:
            continue
        for file in files:
            file_name, suffix_name = os.path.splitext(file)
            if target_suffix=="all":
                find_res.append(os.path.join(root_path, file))
            else:
                if suffix_name == target_suffix_dot:
                    find_res.append(os.path.join(root_path, file))
    return list(set(find_res))
def RemoveBlackBackground(file_name: str):
    target_im = Image.open(file_name)
    target_im = target_im.convert('RGBA')
    target_img_array = np.array(target_im)
    # 透明度
    target_img_Alpha = np.max(target_img_array[:, :, :3], axis=2)
    target_img_array[:, :, 3] = target_img_Alpha
    # 保证在黑色背景上时与原图一致
    target_img_Alpha = target_img_Alpha / 255
    target_img_array[:, :, :3] / target_img_Alpha.reshape([target_img_array.shape[0], -1, 1])

    res_img = Image.fromarray(target_img_array)
    res_img.save("./out/"+file_name.replace("./in",""))
    print("./out/"+file_name.replace("./in",""))
    #res_img.save(os.path.join(output_path, file_name.replace("./in","")))

filelist=findfile("./in")
for i in filelist:
    try:
        RemoveBlackBackground(i)
    except:
        pass

from PIL import Image
import numpy as np
from PIL import Image
import os


def RemoveBlackBackground(file_name: str, output_path: str):
    target_im = Image.open(file_name)
    target_im = target_im.convert('RGBA')
    target_img_array = np.array(target_im)
    # 透明度
    target_img_Alpha = np.max(target_img_array[:, :, :3], axis=2)
    target_img_array[:, :, 3] = target_img_Alpha
    # 保证在黑色背景上时与原图一致
    target_img_Alpha = target_img_Alpha / 255
    target_img_array[:, :, :3] / target_img_Alpha.reshape([target_img_array.shape[0], -1, 1])

    res_img = Image.fromarray(target_img_array)
    res_img.save(os.path.join(output_path, file_name))
RemoveBlackBackground("beiji_shizi7.png","./")
无标签

鲁公网安备 37131202371610号