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","./")