任何人都可以帮助我吗?
我是Jython / Python(一般编码)的新手,我现在正在使用这个名为JES的程序中的库,它允许我轻松地改变图像等。
因此,我尝试使用2个输入,图片和数量来改变图像亮度。
def change(picture, amount):
for px in getPixels(picture):
color = getColor(px)
alter = makeColor(color * amount)
setColor(px, alter)
我尝试了很多其他方法,但它们似乎没有用。图片输入已经分配了图像btw。
我在终端中运行程序,输入更改(图片,0.5),这会使图像变亮50%但我一直收到此错误:
>>> change(picture, 0.5)
The error was: 'instance' and 'float'
Inappropriate argument type.
An attempt was made to call a function with a parameter of an invalid type. This means that you did something such as trying to pass a string to a method that is expecting an integer.
你能帮助我吗?感谢
答案 0 :(得分:1)
尝试将变量color
打印到控制台。您将在控制台上注意到以下内容:
color r=255 g=255 b=255
这是因为方法getColor(px)
返回一个颜色对象。此对象有3个属性r,g,b,表示像素px
的红色,绿色,蓝色值的颜色。
现在你的问题是方法makeColor()
只接受color
的对象作为其参数。目前你试图将颜色乘以amount
,但是当你乘以时,你需要处理数字而不是颜色。
def change(picture, amount):
for px in getPixels(picture):
# Get r,g,b values of the pixel and
myRed = getRed(px) / amount
myBlue = getBlue(px) / amount
myGreen = getGreen(px) / amount
# use those values to make a new color
newColor = makeColor(myRed, myGreen, myBlue)
setColor(px, newColor)