PIL 在Python中转换图像的色调并保存
我用PIL加载和保存图片没问题,但我就是无法改变一张图片的“整体”色调。网上查了一下,发现有个答案是用numpy模块,但我不能用这个。
其实这应该很简单,假设我有一张带透明度的灰色图片,我想把它的色调改成红色。
1 个回答
6
我觉得你想要的是一种单色调的图像,对吗?
现在不太清楚你想对现有的通道(透明度和灰度)做什么。你是想让透明度保持不变,而灰度变成红色的饱和度吗?还是想让透明度变成红色的饱和度?又或者你希望灰度表示图像的亮度,而透明度变成饱和度呢?
编辑:根据你的评论,我调整了输出。你希望灰度通道中最暗的部分代表完全饱和的红色,而最亮的灰色代表白色(也就是说,所有颜色都完全饱和)。你还表示希望透明度在输出中保持不变。我也做了这个调整。
通过一些通道的交换,这个是可以实现的:
import Image
# get an image that is greyscale with alpha
i = Image.open('hsvwheel.png').convert('LA')
# get the two bands
L,A = i.split()
# a fully saturated band
S, = Image.new('L', i.size, 255).split()
# re-combine the bands
# this keeps tha alpha channel in the new image
i2 = Image.merge('RGBA', (S,L,L,A))
# save
i2.save('test.png')