2013-06-24 263 views
2

有沒有辦法讓我的pygame窗口的右半部分截圖?如何截取Pygame屏幕中的某個部分的屏幕截圖

我使用pygame製作遊戲,我需要拍攝屏幕快照,但不是整個屏幕,只是右半部分。

我知道的:

pygame.image.save(screen,"screenshot.jpg") 

但是,這將包括圖像在整個屏幕。

有沒有一種方法可以截取我pygame窗口右側的截圖?

也許通過改變它包含的區域?我搜索了它,但找不到任何我在想也許我可以使用PIL來裁剪它,但這似乎是很多額外的工作。

如果這是不可能的,誰能告訴我最簡單的方法來裁剪整個屏幕的圖片?

回答

7

如果您總是希望屏幕截圖具有相同的屏幕部分,則可以使用subsurfacehttp://www.pygame.org/docs/ref/surface.html#pygame.Surface.subsurface

rect = pygame.Rect(25, 25, 100, 50) 
sub = screen.subsurface(rect) 
pygame.image.save(sub, "screenshot.jpg") 

subsurface會在這種情況下工作得很好,因爲到母體表面(screen在這種情況下)的任何改變將被施加到液麪爲好。

如果您希望能夠指定屏幕的任意部分來拍攝截圖(因此,每次都不是相同的矩形),那麼創建新曲面可能會更好,然後將所需部分屏幕到該表面,然後保存。

rect = pygame.Rect(25, 25, 100, 50) 
screenshot = pygame.Surface(100, 50) 
screenshot.blit(screen, area=rect) 
pygame.image.save(screenshot, "screenshot.jpg") 
+0

哦,那是一個好主意,謝謝! – Serial

-1

我會做這樣的事情:

example = pygame.Surface(screen.get_width()/2, 0)

再後來就當你要採取的截圖信息:

pygame.image.save(example, "example.jpg")