einfach eine erweiterte Version zu teilen und einige visuelle Elemente (weil Visuals gut sind). ..
# 'divisor' : How much we expand the gradient (less is more)
# 'switch' : If True, start gradient from bottom to top
def fadeDownFromBlack(pic, divisor, switch=False):
w = getWidth(pic)
h = getHeight(pic)
startY = 0
endY = min(h-1, int(h/float(divisor)))
inc = 1
if (switch):
startY = h-1
endY = max(0, h-1 - int(h/float(divisor)))
inc = -1
color_ratio = float(divisor)/h
for y in range(startY, endY, inc):
for x in range(0,w):
px = getPixel(pic, x, y)
setRed(px, abs(startY - y)*(color_ratio)*getRed(px))
setGreen(px, abs(startY - y)*(color_ratio)*getGreen(px))
setBlue(px, abs(startY - y)*(color_ratio)*getBlue(px))
file = pickAFile()
picture = makePicture(file)
# The following commented line answers the question
#fadeDownFromBlack(picture, 2)
fadeDownFromBlack(picture, 0.7, True)
writePictureTo(picture, "/home/mad-king.png")
show(picture)
Ausgang (Malerei von Corneliu Baba - der wütende König):
............
............. .........
............
Ich nehme an, Sie verwenden PIL? (Einfach überprüfen.) – MatrixFrog
Ich glaube nicht, nein. Es sei denn, es kommt mit Jython 4.3. – roger34
Aus dem Papier: Um ein Pixel zu verdunkeln multiplizieren Sie die roten, grünen und blauen Ebenen mit einem entsprechenden Bruchteil. Insbesondere, wenn y in der oberen Hälfte des Bildes ist, haben alle Pixel in der Reihe y ihre RGB-Pegel multipliziert mit y * (2,0/h), wobei h die Höhe des Bildes ist. Die Pixel in der unteren Hälfte des Bildes werden nicht verändert. Ich gehe davon aus, dass ich SetBlue usw. dann nicht verwenden muss? Würde ich zurückgeben? – roger34