2012-01-11 11 views
12

समस्या जेपीईजी-एन्कोडेड छवि को स्मृति से लोड करना है।पायथन इमेजिंग: मेमोरी से लोड जेपीईजी

मैं सॉकेट से एक स्ट्रिंग प्राप्त करते हैं:

jpgdata = self.rfile.read(sz) 

और मुझे पता है कि इस jpeg एन्कोड छवि है।

मुझे इसे डीकोड करने की आवश्यकता है। सबसे बेवकूफ समाधान है:

o = open("Output/1.jpg","wb") 
o.write(jpgdata) 
o.close() 
dt = Image.open("Output/1.jpg") 

सवाल यह है कि इन-स्मृति एक ही बात करने के लिए है?

उत्तर

15

पीआईएल की छवि.ऑपेन ऑब्जेक्ट किसी फ़ाइल-जैसी ऑब्जेक्ट को स्वीकार करता है। इसका मतलब है कि आप एक StringIO वस्तु पर अपनी छवि डेटा लपेट कर सकते हैं, और यह

from cStringIO import StringIO 
file_jpgdata = StringIO(jpgdata) 
dt = Image.open(file_jpgdata) 

Image.Open या, बस Image.open लिए एक तर्क के रूप self.rfile गुजर कोशिश करने के लिए पारित - यह बस के रूप में अच्छी तरह से काम कर सकते हैं। (वह पायथन 2 के लिए है - पाइथन 3 के लिए from io import BytesIO)

0

स्ट्रिंगियो का उपयोग करें ताकि छवि आपके डेटा तक पहुंच सके जैसे कि यह एक फ़ाइल थी।

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