2012-01-11 41 views
12

Sự cố là tải hình ảnh được mã hóa jpeg từ bộ nhớ.Hình ảnh Python: tải jpeg từ bộ nhớ

tôi nhận được một chuỗi từ ổ cắm:

jpgdata = self.rfile.read(sz) 

và tôi biết rằng đây là hình ảnh jpeg mã hóa.

Tôi cần giải mã. Giải pháp ngu ngốc nhất là:

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

Câu hỏi đặt ra là làm thế nào để làm điều tương tự trong bộ nhớ?

Trả lời

15

Đối tượng Image.open của PIL chấp nhận bất kỳ đối tượng giống như tệp nào. Điều đó có nghĩa bạn có thể quấn dữ liệu hình ảnh của bạn trên một đối tượng StringIO, và vượt qua nó để Image.Open

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

Hoặc, hãy thử chỉ đi self.rfile như một cuộc tranh cãi để Image.open - nó có thể làm việc chỉ là tốt. (Đó là cho Python 2 - cho Python 3 sử dụng from io import BytesIO)

0

Sử dụng StringIO để Hình ảnh có thể truy cập dữ liệu của bạn như thể đó là một tệp.

Các vấn đề liên quan