当我们临时需要改变一个照片的颜色,使其符合我们想要的主题色时,对于不会PS的我就只能使用一下Python来实现这个简单的过程
比如我想要中国农大农学院的院徽,但在官网上提取出来的图片是白色的
而我想要符合农学主题的绿色,将图片中大于500(这里主要考虑了如果不是纯白的情景,以及一些边缘没那么白的像素)的值替换为new_color,其他地方设置为透明,代码实现如下:
from PIL import Image
# 打开图片
image = Image.open('b5b0f904985f954b9f6b54a94e12c06.png')
# 获得图片的宽度和高度
width, height = image.size
# 定义阈值
threshold = 500
# 创建新的图片对象,模式为RGBA
new_image = Image.new('RGBA', (width, height), (0, 0, 0, 0))
new_color = (0, 117, 51)
# 遍历每个像素点并替换颜色
for x in range(width):
for y in range(height):
# 获取当前像素点的颜色
current_color = image.getpixel((x, y))
# 计算像素点的红、绿、蓝通道之和
total_rgb = sum(current_color)
# 如果像素点的RGB之和小于等于阈值,则将其设置为透明
if total_rgb <= threshold:
new_image.putpixel((x, y), (0, 0, 0, 0)) # 设置为完全透明
else:
new_image.putpixel((x, y), (*new_color, 255)) # 设置为原始颜色
# 保存修改后的图片,透明背景需要png格式
new_image.save('output_image.png', 'PNG')
结果