from PIL import Image
import os
class ChangeImageColor(object):
@classmethod
def startHandle(self, rgb):
# 获取当前路径,并创建新目录用于输出结果image
path = os.getcwd() + '/images/res'
npath = os.getcwd() + '/images/res/result/'
if not os.path.exists(npath):
os.makedirs(npath)
else:
# 如果存在相同新目录那么删除下面文件
for root, dirs, files in os.walk(npath):
for file_name in files:
os.remove(npath + file_name)
# 新颜色值
nr,ng,nb = rgb
# 存放背景颜色
br,bg,bb, ba = 0, 0, 0, 0
# 遍历目录
for root, dirs, files in os.walk(path):
print('root: ', root) # 当前目录路径
print('dirs: ', dirs) # 当前路径下所有子目录
print('files: ', files) # 当前路径下所有非目录子文件
# 遍历下所有图片文件
for file_name in files:
if file_name != '.DS_Store':
image = Image.open(root + '/' + file_name)
if image is not None:
image_width, image_height = image.size
# 遍历Image每个像素
for i in range(image_width):
for j in range(image_height):
xy = (i,j)
# 下面是获取像素和比较像素
color = image.getpixel(xy)
color_num = len(color)
# 判断颜色是否有alpha值
if color_num == 4:
r, g, b, a = color
if i == 0 and j == 0:
br, bg, bb, ba = color
if br != r or bg != g or bb != b:
# 替换像素并保留alpha值
image.putpixel(xy, (nr, ng, nb,a))
elif color_num == 3:
r, g, b = color
if i == 0 and j == 0:
br, bg, bb = color
if br != r or bg != g or bb != b: image.putpixel(xy, (nr, ng, nb))
image.save(npath + file_name)
# 把16进制转换为rgb
@classmethod
def hex2rgb(self, hexcolor):
rgb = ((hexcolor >> 16) & 0xff,
(hexcolor >> 8) & 0xff,
hexcolor & 0xff
)
return rgb
if __name__ == '__main__':
hexColor = int(input('请输入新16进制颜色值:'), 16)
ChangeImageColor.startHandle(ChangeImageColor.hex2rgb(hexColor))
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有