दिलचस्प पोस्ट
जावा में रननाबल और कॉलबल इंटरफेस के बीच अंतर फ्लोट और दशमलव डेटा प्रकार के बीच का अंतर एएससीआईआई वर्ण के लिए एक आंत परिवर्तित करें एक दृश्य में कई मॉडल मैं जावा में एक निर्देशिका में फ़ाइलों के माध्यम से कैसे पुनरावृत्त है? हर पृष्ठ पर एक डीजेंगो लॉगिन फ़ॉर्म डालना उपयोगकर्ता का पता लगाएं नीचे स्क्रॉल करें या jQuery में डुप्लिकेट करें जावा का अर्रे अनुक्रमणिका कहाँ है? कॉलम वेक्टर के अनुसार एक मैट्रिक्स सबसेट करें एसएसआरएस से निर्यात किए गए पीडीएफ़ में रिक्त पृष्ठों से छुटकारा पाने के तरीके एक चुनिंदा ड्रॉप-डाउन सूची से एक आइटम का चयन करते समय स्वचालित रूप से रीडायरेक्ट करें XPath के साथ नामस्थानों को कैसे अनदेखा करें I एक नई खुली खिड़की पर सामग्री जोड़ें हम एक (गैर-स्थिर) आंतरिक वर्ग में स्थिर विधि क्यों नहीं कर सकते? मल्टिप्रोसिंग के लिए अलग-अलग प्रक्रियाओं में कॉपी किए गए डेटा को साझा किया गया है?

पायथन पीआईएल: पीएनजी छवि को स्ट्रिंग में कैसे लिखना है I

मैंने जनहित याचिका का इस्तेमाल करते हुए एक चित्र तैयार किया है। मैं इसे स्मृति में एक स्ट्रिंग में कैसे सहेज सकता हूँ? Image.save() विधि को एक फ़ाइल की आवश्यकता है।

मुझे डिक्शनरी में संग्रहीत ऐसी कई छवियां हैं

वेब के समाधान से एकत्रित समाधान "पायथन पीआईएल: पीएनजी छवि को स्ट्रिंग में कैसे लिखना है I"

शायद स्ट्रिंग आईओओ क्लास का उपयोग कर स्ट्रिंग्स के चारों ओर आवरण प्राप्त कर सकते हैं जो फ़ाइल की तरह व्यवहार करते हैं। StringIO ऑब्जेक्ट एक फ़ाइल के रूप में एक ही इंटरफ़ेस प्रदान करता है, लेकिन केवल स्मृति में सामग्री को बचाता है:

 import StringIO output = StringIO.StringIO() image.save(output) contents = output.getvalue() output.close() 

यह एक प्रमुख KeyError हो सकता है अगर पीआईएल स्वत: आउटपुट स्वरूप का पता लगाने की कोशिश करता है। इस समस्या से बचने के लिए आप प्रारूप मैन्युअल रूप से निर्दिष्ट कर सकते हैं:

 image.save(output, format="GIF") 

एसटीएच के समाधान ने मेरे लिए काम नहीं किया
क्योंकि …

इमेजिंग / पीआईएल / इमेजबाक लाइन 1423 -> कैरेअर (एक्सट्रैक्ट) बढ़ाएं # अज्ञात एक्सटेंशन

यह फाइलनाम में एक्सटेंशन से प्रारूप का पता लगाने की कोशिश कर रहा था, जो स्ट्रिंगियो के मामले में मौजूद नहीं है

आप पैरामीटर में प्रारूप को स्वयं सेट करके स्वरूप पहचान को बायपास कर सकते हैं

 import StringIO output = StringIO.StringIO() format = 'PNG' # or 'JPEG' or whatever you want image.save(output, format) contents = output.getvalue() output.close() 

Python3 के लिए यह बाइटियो का उपयोग करने के लिए आवश्यक है:

 from io import BytesIO from PIL import Image, ImageDraw image = Image.new("RGB", (300, 50)) draw = ImageDraw.Draw(image) draw.text((0, 0), "This text is drawn on image") byte_io = BytesIO() image.save(byte_io, 'PNG') 

और पढ़ें: http://fadeit.dk/blog/post/python3-flask-pil-in-memory-image

सहेज () फ़ाइल-जैसी ऑब्जेक्ट के साथ-साथ एक पथ भी ले सकता है, ताकि आप एक स्ट्रिंगआईओ की तरह एक इन-मेमोरी बफर का उपयोग कर सकें:

 buf= StringIO.StringIO() im.save(buf, format= 'JPEG') jpeg= buf.getvalue() 

जब आप कहते हैं कि "मैं इस तरह की छवियों की संख्या में शब्दकोश रखना चाहता हूं", तो यह स्पष्ट नहीं है कि यह एक इन-मेमरी संरचना है या नहीं।

आपको मेमोरी में छवि को नम्र करने के लिए इनमें से कोई भी करने की आवश्यकता नहीं है। सिर्फ अपने शब्दकोश में image ऑब्जेक्ट रखें।

यदि आप एक फ़ाइल में अपना शब्दकोश लिखने जा रहे हैं, तो आप im.tostring() विधि और Image.fromstring() फ़ंक्शन को देखना चाहते हैं

http://effbot.org/imagingbook/image.htm

im.tostring () => स्ट्रिंग

मानक "कच्चे" एन्कोडर का उपयोग करते हुए पिक्सेल डेटा युक्त स्ट्रिंग देता है।

Image.fromstring (मोड, आकार, डेटा) => छवि

मानक "कच्चा" डिकोडर का उपयोग करके, एक स्ट्रिंग में पिक्सेल डेटा से एक छवि मेमोरी बनाता है

"प्रारूप" (.jpeg, .png, आदि) केवल डिस्क पर होने वाले मामलों में जब आप फ़ाइलों का आदान-प्रदान कर रहे हैं यदि आप फ़ाइलों का आदान-प्रदान नहीं कर रहे हैं, तो प्रारूप में कोई फर्क नहीं पड़ता

आधुनिक के साथ (2017 के मध्य के पायथन 3.5 और तकिया 4.0):

StringIO अब काम करने के लिए लगता है बाइट्सियो वर्ग इस को संभालने का सही तरीका है। तकिया की सहेजने वाली फ़ंक्शन को पहली तर्क के रूप में एक स्ट्रिंग की उम्मीद है, और आश्चर्यजनक रूप से स्ट्रिंगआईओ को ऐसा नहीं दिखता है निम्नलिखित पुराने स्ट्रिंगआईओ समाधान के समान है, लेकिन इसके स्थान पर बाइटिसियो के साथ।

 from io import BytesIO from PIL import Image image = Image.open("a_file.png") faux_file = BytesIO() image_data = faux_file.getvalue() image.save(faux_file, 'png')