3

我在下面有一些代码:

color = complexity * (255 / iterationCap)
r = (color >> 16) & 255
g = (color >> 8) & 255
b = (color >> 0) & 255

color我正在尝试根据从变量中获得的浮点数计算颜色。

目前,我正在使用 python 3.3 尝试and用 255 移动位和它们以获得正确rg、 和b值。

我得到的错误是:

TypeError: unsupported operand type(s) for >>: 'float' and 'int'
  1. 有没有简单的方法来解决这个问题?比如,我可以用 int 移动浮点数吗?和,
  2. 如果没有,是否有一种简单的方法可以根据数字计算颜色?

目前我正在使用图像库将像素绘制到文件中,我只是将我的颜色元组添加到一个数组中,然后将其输入到Image.putdata(..).

4

3 回答 3

6

在 Python 3 中,/运算符是浮点除法。您想//用于整数除法。

鉴于您对代码应该做什么的评论,我们可以编写如下内容:

color = int(complexity * 255 / iterationCap) # gives an integer number from 0 to 255
r = color >> 16
g = color >> 8
b = color

随着复杂性的变化,这会产生灰色渐变。

于 2013-11-14T15:31:22.903 回答
1
color = long(complexity * (255 / iterationCap))

由于移位浮点数是未定义的操作。

于 2013-11-14T15:32:34.310 回答
1

在尝试按位运算之前转换为 int。

color = int(complexity * (255 / iterationCap))
于 2013-11-14T15:32:48.637 回答