2012-01-21 22 views
0

私はプログラムを読み込んでイメージを作り、それを別の部分に分割し、これらの差分部分をフォルダに保存しようとしています。しかし、代わりにトリミングされた画像を保存することは、それが全体の画像を保存画像全体pygame.transform.chop not working

import sys, pygame 
from pygame import * 
pygame.init() 
while True: 
    image=pygame.image.load(raw_input("Enter the file: ")) 
    rows=int(input("Enter the number of rows: ")) 
    columns=int(input("Enter the number of columns: ")) 
    output=raw_input("Enter the output folder: ") 
    width=image.get_width()/columns 
    height=image.get_height()/rows 
    print ("In progress...") 
    for i in range(0, rows): 
     for j in range(0, columns): 
      cropped_image=pygame.transform.chop(image, (j*columns, i*rows, width, height)) 
      cropped_output=output+"/" + str(i)+"_"+str(j)+".png" 
      pygame.image.save(cropped_image, cropped_output) 
    print ("completed") 

代わりにcropped_image(画像の一部のみ)を保存を保存します。なぜそれが働かないのか? ありがとう

答えて

1

あなたはサイズのx heightwidthのタイルにチョッピングされています。したがって、行iおよび列jのタイルの起源は、j*width,i*height - j*columns,i*rowsではありません。

+0

ありがとう!できます! – John

+0

これはまったく同じ間違いです。 –

1

pygame.transform.chopの代わりに、Surface.subsurfaceに指定している矩形を使ってみることをお勧めします。 pygame.transform.chopのPygameのドキュメントには、-

イメージの一部を返す「クロップ」が必要な場合は、新しいサーフェスに矩形でblitするか、表面下。

だからあなたの例のためには、次のようになります。

cropped_image=image.subsurface((j*columns, i*rows, width, height)) 
+0

イメージを作っていますが、それは必要なだけ切り取られていて、順序どおりではなく、間違った場所で切り取られます。 – John

+0

あなたが作った作物を与えるためにrectコードを微調整する必要があります。私はあなたのソースイメージを持っていないので、テストします。表面下の方法は作物を実行する方法です – timc