1

私はJythonでコードを書いています.1つの画像の一部を空の画像にコピーしますが、次の行ごとに10ピクセル少なくコピーしたいと思います. 意味がわからないので、例を挙げて説明します。100 ピクセル x 100 ピクセルの画像の場合、プログラムは最初の行 (100 ピクセル) のピクセルを新しい画像にコピーしますが、2 番目の行のピクセルについては 90 ピクセルのみをコピーし、次に 3 番目の行については 80 ピクセルをコピーします。の上。

ここに、画像の一部をコピーするコードがありますが、正方形をコピーします。それで、私が望むことをするために何を追加する必要がありますか。で何かをすることになっていると思いますが、何をするのfor x in rangeかわかりません。

def copyPic():
  file=pickAFile()
  oldPic=makePicture(file)
  newPic=makeEmptyPicture(getWidth(oldPic),getHeight(oldPic))
  xstart=getWidth(oldPic)/2
  ystart=getHeight(oldPic)/2
    for y in range(ystart,getHeight(oldPic)):
       for x in range(xstart, (getWidth(oldPic))):
         oldPixel=getPixel(oldPic,x,y)
         colour=getColor(oldPixel)
         newPixel=getPixel(newPic,x,y)
         setColor(newPixel,colour)
  explore(newPic)
4

2 に答える 2

1

あなたのコードは間違いなく画像の右下1/4をコピーするように見えます...あなたが減らす必要があるそのセクションの三角形の部分(または私があなたの質問を正しく理解しているなら角度を持っている部分)を作るために毎回のX最大値...次のようなもの:

def copyPic():
  file=pickAFile()
  oldPic=makePicture(file)
  newPic=makeEmptyPicture(getWidth(oldPic),getHeight(oldPic))
  xstart=getWidth(oldPic)/2
  ystart=getHeight(oldPic)/2

  # The next line gets the max value x can be (width of pic)
  xmax = getWidth(oldPic)

    for y in range(ystart,getHeight(oldPic)):

       # Now loop from the middle (xstart) to the end (xmax)
       for x in range(xstart, xmax):

         oldPixel=getPixel(oldPic,x,y)
         colour=getColor(oldPixel)
         newPixel=getPixel(newPic,x,y)
         setColor(newPixel,colour)

       # Now the x-loop has finished for this line (this value of y)
       # so reduce xmax by 10 (or whatever value) ready for the next line
       xmax = xmax - 10

       # Then you should do some checking in your code to ensure
       # xmax is not < xstart... here is something crude that should work
       if xmax < xstart:
           xmax = xstart

  explore(newPic)

私が思うあなたのコードはこのような画像を取ります:

+------------+
|   1     2  |
|            |
|   3     4  |
|            |
+------------+

そしてこれを与える:

+-----+
|  4  |
|     |
+-----+

Xループは常に同じ長さなので

示されているように毎回xを減らすと、次のようになります。

+-----+
|  4 /
|  /
+-

これはあまりうまくコーディングされておらず、すべてを書き直すことができます...しかし、Pythonを学んでいるだけの場合は、少なくともコードに加えた変更は、すでに持っているものとうまく機能し、簡単に理解できるはずです。お役に立てば幸いです。必要に応じて、遠慮なく説明を求めてください。

乾杯

PS:あなたはこれを2回尋ねたようです-答えが分割され、後でこのような答えを見つけようとする人々が難しくなるので、同じ質問を2回尋ねるべきではありません...

于 2013-01-15T04:20:11.827 に答える