Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用python图像库以某种方式使用小数来改变我的颜色?_Python_Python Imaging Library - Fatal编程技术网

是否可以使用python图像库以某种方式使用小数来改变我的颜色?

是否可以使用python图像库以某种方式使用小数来改变我的颜色?,python,python-imaging-library,Python,Python Imaging Library,我正在使用python图像库构建一些数据的bmp。然而,我真的需要用十进制数字来改变我的颜色。从int 0到int 256的颜色范围对于我的图表来说变化不够 下面是一个例子来说明一些与我正在做的类似的事情: pixels[x,y] = (random.randint(0, 256), random.randint(0, 256), random.randint(0, 256)) #note: in my example, the random int is the same for each

我正在使用python图像库构建一些数据的bmp。然而,我真的需要用十进制数字来改变我的颜色。从int 0到int 256的颜色范围对于我的图表来说变化不够

下面是一个例子来说明一些与我正在做的类似的事情:

pixels[x,y] = (random.randint(0, 256), random.randint(0, 256), random.randint(0, 256))

#note: in my example, the random int is the same for each param

然而,我想改变我的像素从一些更大的(可能像0-1000)。我想使用小数,这样我就可以在0-256的范围内改变颜色。但是,当我使用十进制数字绘制像素时,会出现一个错误。有解决办法吗?

没有。PIL支持的格式中的像素值只能是整数;如果要使用分数值,则需要将其缩放到相应的等效整数,或者使用诸如PyCairo之类的模块来为您转换这些值。

是。(有点)

对于灰度,通常的PIL颜色模式为“L”,即每像素8位,但也可以使用模式“I”32位整数像素或“F”32位浮点像素

img = new('F', (100, 100))
img.putpixel( (40, 60), 100.5)
print img.getpixel( (40, 60))
# 100.5
但是,如果不转换为8bpp颜色模式,PIL很难将其保存为格式。Tiff格式可以支持每个平面每像素16或32位,但PIL还不支持


所以你不能真正看到结果。无论如何,你的眼睛可能无法感知到差异。

16777216颜色对你来说还不够吗?这是什么类型的图像?我只是使用灰度图像,所以从0到256的变化是不够的。我不想在这个项目中使用其他颜色。谢谢,请阅读一些关于RGB意味着什么的文章。我不认为你想要更多的值,而是想要一种生成不同颜色的方法。咨询or,并调查HSL或HSV。