Jython JES:改变图像的亮度是行不通的

时间:2014-08-27 10:47:56

标签: python jython brightness jes

任何人都可以帮助我吗?

我是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.
你能帮助我吗?感谢

1 个答案:

答案 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)