首页 > 解决方案 > 使用 PIL.Image.new() 创建图像时“颜色”的含义是什么?

问题描述

枕头文档说,当给定一个整数时,图像将是单通道图片color,但是我尝试了几次,不知道为什么图像不像单通道图像那样是灰色的。这是代码:

from PIL import Image
im = Image.new(‘RGB’, [100, 100], 100) # this pic is deep red
im1 = Image.new(‘RGB’, [100, 100], 1000) # this pic is red
im2 = Image.new(‘RGB’, [100, 100], 10000) # this pic is black

那么,PIL 是如何解释整数的呢?这是使用调色板转换的吗?

标签: pythonpython-imaging-library

解决方案


在 doc Image.new 中,我看到了一些不同的东西。

当您使用RGBthen 时,它会创建 3 个通道,您应该使用元组 (R,G,B)color来设置所有通道中所有像素的值。如果您使用单个整数/浮点数,那么它可能会将其转换为元组 (R,G,B)。

如果您使用L它会创建 1 个通道,然后您应该使用单个整数/浮点数为所有像素设置颜色

color不会改变频道数量。


编辑:将 3x8位转换R,G,B为 24 位值/从 24 位值转换

value = 1000
R = value%256
value = value//256
G = value%256
value = value//256
B = value%256

print(R,G,B)
print(R+(G*256)+(B*256*256))

结果

232 3 0
1000

推荐阅读