pygame.transform.chop не работает - PullRequest
       19

pygame.transform.chop не работает

0 голосов
/ 21 января 2012

Я пытаюсь создать программу, которая загружает изображение, а затем разбивает его на разные части и сохраняет эти разные части в папке. Однако вместо сохранения обрезанного изображения сохраняется все изображение

 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 (только часть изображения) сохраняет все изображение. Есть идеи, почему это не работает? Спасибо

Ответы [ 2 ]

2 голосов
/ 27 января 2012

Вы нарезаете плитки размером width x height.Таким образом, начало элемента в строке i и столбце j равно j*width, i*height, а не j*columns, i*rows.

.
2 голосов
/ 21 января 2012

Вместо использования pygame.transform.chop я бы предложил вам попробовать Surface.subsurface с указанным вами прямоугольником. В документации Pygame для pygame.transform.chop говорится:

Если вам нужна «обрезка», которая возвращает часть изображения внутри прямоугольника, вы можете переместить прямоугольник на новую поверхность или скопировать подповерхность.

Итак, для вашего примера это будет:

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