我对您尝试实现的方法一无所知,但对于其余的:假设Canvas
是 type Picture
,您不能以这种方式直接获得颜色。像素的颜色可以从类型的变量中获得Pixel
:
示例:以下是从图像中获取每个像素的颜色并将它们分配在新图片中完全相同的位置的过程:
def copy(old_picture):
# Create a picture to be returned, of the exact same size than the source one
new_picture = makeEmptyPicture(old_picture.getWidth(), old_picture.getHeight())
# Process copy pixel by pixel
for x in xrange(old_picture.getWidth()):
for y in xrange(old_picture.getHeight()):
# Get the source pixel at (x,y)
old_pixel = getPixel(old_picture, x, y)
# Get the pixel at (x,y) from the resulting new picture
# which remains blank until you assign it a color
new_pixel = getPixel(new_picture, x, y)
# Grab the color of the previously selected source pixel
# and assign it to the resulting new picture
setColor(new_pixel, getColor(old_pixel))
return new_picture
file = pickAFile()
old_pic = makePicture(file)
new_pic = copy(old_pic)
注意:上面的示例仅适用于您想要处理新图片而不修改旧图片的情况。如果您的算法需要在执行算法时动态修改旧图片,则最终setColor
将直接应用于原始像素(不需要新图片,也不需要return
声明)。
从这里开始,您可以通过操作像素的 RGB 值来计算您想要的任何东西(使用setRed()
,setGreen()
和setBlue()
应用于 a 的函数Pixel
,或者col = makeColor(red_val, green_val, blue_val)
使用 将返回的颜色应用于像素setColor(a_pixel, col)
)。
此处是 RGB 操作的示例。
其他一些人在这里,尤其是这里。