質問

この関数のアイデアは、(それが徐々に暗く)のみ画像の上半分をフェードすることです。ここで私が持っているものですが、それは上半分黒一色のすべてを作っているようです。

def fadeDownFromBlack(pic1):

w=getWidth(pic1)
h=getHeight(pic1)

for y in range(0,h/2):
     for x in range(0,w):
        px=getPixel(pic1,x,y) 
        setBlue(px,y*(2.0/h)) 
        setRed(px,y*(2.0/h)) 
        setGreen(px,y*(2.0/h))
役に立ちましたか?

解決

のは、ここだけで1行を見てみましょう

setBlue(px,y*(2.0/h))

、ここで重要な部分です。

y*(2.0/h)

yの変化、あなたがダウンして行くように。のは、Yと時間のためのいくつかの単純な値を試してみましょう。のは、hが100であるとしましょうとyがともに0と50(H / 2)であるときに我々が検討します。色の値のあなたの範囲は、0が最も暗いものと256である場合、Y = 0の場合、我々はY = 50の場合は0を取得し、我々は1を取得し、その後も不思議ではこれは黒ではありません。あなたが持っていることは0から1までの値の範囲ですが、私はあなたが欲しいものを推測している古いカラー値によって、その数や時間、それを取ることです。

何がしたいことはあります:

setBlue(px,y*(2.0/h)*getBlue(px))

や他の色についても同様の事ます。

他のヒント

  

は、のピクセルを暗くする乗算の適切な画分により、赤、緑、青のレベル

何をやってます:

setBlue(px,y*(2.0/h))

何をするように言われている。

setBlue(px,y*(2.0/h) * getBlue(px))

スケールがsetBlue /レッド/グリーン方法のためであるかを調べます。私は0は黒に対応して想定しますが、明るい何ですか?あなたはそれが1だと仮定しているように見えるが、それは実際には255か何かかもしれません。それが1であっても、このコードは、アカウントにピクセルの古い値を取っていないように、それだけでその垂直位置に基づいて、正確な色に設定するだ見えます。多分それはあなたが何をしたいのですが、私はそれを疑います。おそらく、代わりに何かして画素の現在の値を乗算します。

ただ、強化されたバージョンを共有すると(ビジュアルが優れているので)いくつかのビジュアルを追加...

# '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)


出力(のことで絵画のコーネリウ・ババの - マッドキングの):

<時間>

............ ..... ................. ... .........

<時間>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top