2013-01-05 13 views
5

मैं स्क्रीन के एक हिस्से को परिप्रेक्ष्य में बदलने के लिए पीआईएल का उपयोग कर रहा हूं। मूल छवि-डेटा एक पायगम सतह है जिसे पीआईएल छवि में परिवर्तित करने की आवश्यकता है।एक pygame सतह से एक पीआईएल छवि को कैसे परिवर्तित करें?

इसलिए मुझे उस उद्देश्य के लिए मौजूद पायगम का टॉस्ट्रिंग-फ़ंक्शन मिला।

हालांकि परिणाम बहुत अजीब दिखता है (संलग्न स्क्रीनशॉट देखें)। इस कोड के साथ क्या गलत हो रहा है:

rImage = pygame.Surface((1024,768)) 

#draw something to the Surface 
sprite = pygame.sprite.RenderPlain((playboard,)) 
sprite.draw(rImage) 

pil_string_image = pygame.image.tostring(rImage, "RGBA",False) 
pil_image = Image.fromstring("RGBA",(660,660),pil_string_image) 

मैं क्या गलत कर रहा हूं?

pygame surface to pil image conversion

+1

ऐसा लगता है कि आप (1024,768) (660,660) के स्थान पर रखते हैं, या इसके विपरीत? –

+0

यह काम करता है, लेकिन क्यों? – Hedge

+0

[pygame डॉक्स] (http://www.pygame.org/docs/ref/image.html#pygame.image.fromstring) pygame.image.fromstring (स्ट्रिंग, आकार, प्रारूप, फ़्लिप = गलत) के बारे में कहते हैं "द आकार और स्वरूप छवि को पास किए गए स्ट्रिंग बफर के समान सटीक आकार की गणना करनी चाहिए। अन्यथा एक अपवाद उठाया जाएगा "लेकिन उससे परे मुझे नहीं पता कि यह कैसे काम करता है। –

उत्तर

5

मैं एक टिप्पणी में बताया गया है, pygame documentation pygame.image.fromstring(string, size, format, flipped=False) के लिए कहते हैं, "आकार और स्वरूप छवि स्ट्रिंग पारित बफर के रूप में ठीक उसी आकार की गणना करना चाहिए। अन्यथा एक अपवाद उठाया जाएगा "। इस प्रकार, (660,660) के स्थान पर (1024,768), या इसके विपरीत - सामान्य रूप से, दो कॉल के लिए समान आयाम - काम करने की अधिक संभावना है। (मैं "काम करेगा" के बजाय "काम करने की अधिक संभावना" कहता हूं क्योंकि मैंने किसी भी मामले का परीक्षण नहीं किया था।)

इस तरह की समस्या पर संदेह करने का कारण: छवि के हिस्से का अजीब रूप डिस्प्ले जैसा दिखता है स्क्रीन जो रास्टर दर पर सेट है, यह सिंक्रनाइज़ नहीं कर सकती है; यानी, छवि की रेखाएं बाएं हाशिए के अलावा अन्य बिंदुओं पर प्रदर्शित होने लगती हैं; इस मामले में छवि रेखा लंबाई की लंबाई रेखा लंबाई से अधिक लंबा है। मुझे लगता है कि बर्फ के टुकड़े sprites हैं, विकृत छवि से अलग उत्पन्न किया।

संबंधित मुद्दे