On Fri, Apr 27, 2012 at 6:21 AM, Charles Cazabon <charlesc-pyimage...@pyropus.ca> wrote:
>> I am stuck however, in figuring out how to take the string data and >> converting it back to an image that I can put into the canvas widget. > > See the PIL handbook, where it says "If you have an entire image file in a > string, wrap it in a StringIO object, and use open to load it." Actually, I don't think that's what the OP wants. A couple notes: 1) "string" is a confusing term -- generally it means text, but in python (2.*) it means "an arrbitrary sequence of bytes, that can be interpreteed as text depending on context" -- that is why there is now a "string" object and a "bytes" object. IN py2, bytes and string are the same, but it's handy to use bytes for future compatibility with py3, and for clarity in your code. So in this case, we are talking about bytes objects. (side note: make sure you are storing bytes objects in your DB properly -- as a binary blob, so that it doens't mess with the data) Now the real point: you can store an image in two ways (at least) in a bytes object: 1) essentially a binary dump of what would be in an encoced file (PNG, whatever). This is would you d get if you did: the_image_bytes = file("an_image.png", 'rb').read() 2) a binary dump of the bytes in memeory of the image object, without encoding or compression -- this is waht you get whn you do: the_image_bytes = a_pil_image.tostring() The STringIO suggestion refers to the former, but I thikn the OP was dealing with the later. In the later case, you can re-construct teh image object with: Image.fromstring(mode, size, data) => image so: a_pil_image = Image.fromstring('RGB', (300, 500), the_image_bytes) note that you'll need to keep track of what the made and size of the image are -- PIL can't figure that out just from the data. Depending on your needs, you may in fact want to store the PNG-encoded bytes in the DB, and decode them when you pull them out, using the StringIO strick. HTH, -Chris -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig