2012-07-10 99 views
2

我在pygame中有一個200x200px的圖像,我想將其切成兩半,因此2個圖形將爲100x200px。之後,我想用屏幕上的一定數量的像素將屏幕上的2個新圖像覆蓋。圖像如何以這種方式分割/裁剪?Pygame中的拆分圖像

編輯 - 修正!我設法通過使用pygame.transform.chop()pygame.transform.rotate()來解決這個問題。不過,感謝您的幫助。我多瞭解Tankor Smash的幫助。

回答

1

我相信你會更好使用PIL,這裏http://www.pythonware.com/products/pil/

但是如果你使用pygame的,這會是一起創建與它的圖像表面的東西線,然後塊傳輸一半的表面到屏幕的一部分,然後在另一半的另一半。

#load the image to a surface 
img =pygame.image.load(path) 
#create a rect half the width of the image 
half_rect = pygame.rect(img.width/2, img.height/2) 
#blit first half 
main_screen.blit((0,0), rect, img) 
#blit second half 
main_screen.blit((image.width+10,0),rect, img) 

現在,這是僞代碼,但是這就是我想要做的,大致

+0

顯然沒有寬度屬性。 回溯(最近一次調用最後一次): 文件「C:/Users/User/Desktop/test.py」,第11行, half_rect = pygame.Rect(img.width/2,img.height/2 ) AttributeError:'pygame.Surface'對象沒有屬性'width' – Eric 2012-07-10 20:25:40

+0

你必須做一些學習,但我會認爲完整的代碼是'img.get_rect()。width'。查找搜索條件,Pygame Rect和Pygame表面以獲取更多信息。起初很奇怪,它變得相當簡單。 – TankorSmash 2012-07-10 20:39:06

4

你並不需要創建兩個圖像,只需使用一個位塊傳輸兩次:

origin1 = (0,0) 
separation = 20 

# Load the image 
img = pygame.image.load(image_path) 

width, height = img.get_width()/2, img.get_height() 
origin2 = origin1[0] + width + separation, origin1[1] 

# Blit first half 
source_area = pygame.Rect((0,0), (width, height)) 
screen.blit(img, origin1, source_area) 

# Blit second half 
source_area = pygame.Rect((width,0), (width, height)) 
screen.blit(img, origin2, source_area) 
+0

正是我在說什麼,但用真實的代碼。 +1 – TankorSmash 2012-07-10 19:58:43

+0

由於某些原因,儘管將目標設置爲4000x4000,blit目標仍在屏幕外。 回溯(最近通話最後一個): 文件 「C:/Users/User/Desktop/test.py」,第24行,在 screen.blit(IMG,origin2,source_area) 類型錯誤:無效的目標位置blit – Eric 2012-07-10 20:33:21

+0

@ Alpha15,我做了一個小的編輯,也許這是問題,origin2缺少第二個座標:'origin2 = origin1 [0] + width + separation,origin1 [1]' – pmoleri 2012-07-11 13:33:56