On Tue, Dec 9, 2008 at 5:35 PM, Fredrik Lundh <[EMAIL PROTECTED]> wrote:
> The "raw" data decoder expects raw binary bytes; in this case, it > expects four bytes per pixel (<red> <green> <blue> <alpha>), repeated > 80x80 times to fill the entire image. What does the data you get back > from getImageData() look like if you print (a portion of) it? e.g. > say > > print repr(data[:40]) > > (That "replace" you're using makes me think that you have data in text > form, not binary form...) And for the record, here's a fairly efficient way to convert comma-separated pixel values into a PIL Image object: >>> data = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16" >>> import Image >>> import array >>> a = array.array("b", map(int, data.split(","))) >>> a array('b', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]) # turn it into a grayscale image (one byte per pixel) >>> i = Image.frombuffer("L", (4, 4), a, "raw", "L", 0, 1) >>> i.mode 'L' >>> list(i.getdata()) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] # turn it into an RGBA image (four bytes per pixel) >>> i = Image.frombuffer("RGBA", (1, 4), a, "raw", "RGBA", 0, 1) >>> i.mode 'RGBA' >>> list(i.getdata()) [(1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12), (13, 14, 15, 16)] </F> _______________________________________________ Image-SIG maillist - Image-SIG@python.org http://mail.python.org/mailman/listinfo/image-sig