2013-10-21 2 views
6

मैं पीआईएल के साथ छवियों का एक गुच्छा पेस्ट करना चाहता हूं। (उदा। (128,128,128,128)): किसी कारण के लिए, जब मैं लाइन blank.paste(img,(i*128,j*128)) चलाने मैं निम्नलिखित त्रुटि मिलती है ValueError: cannot determine region size; use 4-item boxपायथन पीआईएल पेस्ट

मैं इसके साथ खिलवाड़ और 4 तत्वों के साथ एक टपल का उपयोग कर की तरह यह कहा की कोशिश की लेकिन यह मुझे इस त्रुटि देता है: SystemError: new style getargs format but argument is not a tuple

प्रत्येक छवि 128x है और "x_y.png" की नामकरण शैली है जहां x और y 0 से 39 तक हैं। मेरा कोड नीचे है।

from PIL import Image 

loc = 'top right/' 
blank = Image.new("RGB", (6000,6000), "white") 

for x in range(40): 
    for y in reversed(range(40)): 
     file = str(x)+'_'+str(y)+'.png' 
     img = open(loc+file) 
     blank.paste(img,(x*128,y*128)) 

blank.save('top right.png') 

मैं इसे कैसे काम कर सकता हूं?

उत्तर

1

आप छवि को सही तरीके से लोड नहीं कर रहे हैं। अंतर्निहित फ़ंक्शन open बस एक नई फ़ाइल डिस्क्रिप्टर खोलता है। जनहित याचिका के साथ एक छवि लोड करने के Image.open बजाय का उपयोग करें:

from PIL import Image 
im = Image.open("bride.jpg") # open the file and "load" the image in one statement 

आप उपयोग करना एक कारण है, तो अंतर्निहित खुला है, तो कुछ इस तरह करते हैं:

fin = open("bride.jpg") # open the file 
img = Image.open(fin) # "load" the image from the opened file 
जनहित याचिका के साथ

, "लोड हो रहा है" एक छवि का अर्थ है छवि शीर्षलेख पढ़ना। पीआईएल आलसी है, इसलिए जब तक इसकी आवश्यकता नहीं होती है तब तक यह वास्तविक छवि डेटा लोड नहीं करता है।

इसके अलावा, स्ट्रिंग कॉन्सटेनेशन के बजाय os.path.join का उपयोग करने पर विचार करें।

+0

यही काम किया, धन्यवाद:

मैं इसे ubuntu के साथ अपने सर्वर में कदम था। मुझे पता था कि यह कुछ बेवकूफ बनने वाला था। Os.path.join सुझाव के लिए – user2901745

+0

+1। – volvox

3

यह मेरे लिए काम करता है, मैं ओडू v9 का उपयोग कर रहा हूं और मेरे पास तकिया 4.0 है।

# pip uninstall pillow 
# pip install Pillow==3.4.2 
# /etc/init.d/odoo restart 
+0

आपका उत्तर वास्तव में मेरे लिए बहुत उपयोगी है धन्यवाद –

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