from PIL import Image
import sys
import os
def ChangeImg(filePath, fileSavePath, color):
img = Image.open(filePath)
width, height = img.size
pix_array = img.load()
for x in range(width):
for y in range(height):
tuple = pix_array[x,y]
if color == 'red':
if tuple[0] != 0:
tuple2 = (255, 0, 0)
else:
tuple2 = (255, 255, 255)
else:
if tuple[0] != 0:
tuple2 = (0, 255, 0)
else:
tuple2 = (255, 255, 255)
pix_array[x, y] = tuple2
img.save(fileSavePath)
def ChangeImg_merge(filePath1, filePath2, save_path):
img1 = Image.open(filePath1)
width, height = img1.size
pix_array1 = img1.load()
img2 = Image.open(filePath2)
pix_array2 = img2.load()
for x in range(width):
for y in range(height):
tuple1 = pix_array1[x, y]
tuple2 = pix_array2[x, y]
if tuple1 == (255, 255, 255) and tuple2 == (255, 255, 255):
hex_num = (255, 255, 255)
elif tuple1 == (255, 255, 255) and tuple2 != (255, 255, 255):
hex_num = tuple2
elif tuple1 != (255, 255, 255) and tuple2 == (255, 255, 255):
hex_num = tuple1
else:
hex_num = (255, 255, 0)
pix_array1[x, y] = hex_num
img1.save(save_path)
def TraverseRed(basedir):
try:
red_bmp_dir = basedir + '\红bmp'
for roots, dirs, files in os.walk(red_bmp_dir):
for fileName in files:
if fileName.endswith('.bmp'):
fileNum = fileName.split('.')[0].split('_')[0]
savedir = basedir + '\合并bmp\\' + fileNum
if not os.path.exists(savedir):
os.mkdir(savedir)
filePath = red_bmp_dir + '\\' + fileName
fileSavePath = savedir + '\\' + fileNum + '_红.png'
ChangeImg(filePath, fileSavePath, 'red')
except IOError:
print("执行出错,请退出重新尝试!!!")
def TraverseGreen(basedir):
try:
red_bmp_dir = basedir + '\绿bmp'
for roots, dirs, files in os.walk(red_bmp_dir):
for fileName in files:
if fileName.endswith('.bmp'):
fileNum = fileName.split('.')[0].split('_')[0]
savedir = basedir + '\合并bmp\\' + fileNum
if not os.path.exists(savedir):
os.mkdir(savedir)
filePath = red_bmp_dir + '\\' + fileName
fileSavePath = savedir + '\\' + fileNum + '_绿.png'
ChangeImg(filePath, fileSavePath, 'green')
except IOError:
print("执行出错,请退出重新尝试!!!")
def TraverseMerge(basedir):
try:
merge_blk_dir = basedir + '\合并bmp'
for roots, dirs, files in os.walk(merge_blk_dir):
if files == []:
continue
file_path1 = roots + '\\' + files[0]
file_path2 = roots + '\\' + files[1]
save_path = roots + '\\' + files[0][:4] + '_合并.png'
ChangeImg_merge(file_path1, file_path2, save_path)
except IOError:
print("执行出错,请退出重新尝试!!!")
if __name__ == '__main__':
print("start...\n")
print("转化中,若文件较多,可能需要几分钟的时间,不要关闭此窗口,请耐心等待。。。\n")
basedir = sys.argv[0][:-12]
print('开始生成红色位图')
TraverseRed(basedir)
print('红色位图生成完毕。。\n')
print('开始生成绿色位图')
TraverseGreen(basedir)
print('绿色位图生成完毕。。\n')
print('开始合并红、绿位图')
TraverseMerge(basedir)
print('位图合并完毕。。\n')
print('转化完成!!!\n')
os.system("pause")