[Image-SIG] frombuffer defaults to flip of fromstring?
Dan Torop
dtorop933 at gmail.com
Thu Jul 6 21:37:03 CEST 2006
I was curious whether there was a bug in the default behavior of
Image.frombuffer(). Consider the example:
import Image
out = '\xff\x00\x00\xff\xff\x00\xff\xff\xff'
Image.fromstring('L', (3, 3), out).save('string-default.png')
Image.frombuffer('L', (3, 3), out).save('buffer-default.png')
Image.frombuffer('L', (3, 3), out, 'raw', 'L', 0,
1).save('buffer-oriented-1.png')
Running against PIL 1.1.5 I see "buffer-default.png" is upside down
compared to "string-default.png". OTOH, "buffer-oriented-1.png"
(where the orientation is manually set to 1) matches
"string-default.png".
The online documentation
(http://www.pythonware.com/library/pil/handbook/decoder.htm#h0003) it
says re orientation: "Whether the first line in the image is the top
line on the screen (1), or the bottom line (-1). If omitted, the
orientation defaults to 1." So actual behavior seems to be contrary to
both expected and documented behavior.
Assuming this is a real problem, a fix to frombuffer (vs. 1.1.6b1) might be:
--- Imaging-1.1.6b1/PIL/Image.py.orig 2006-07-06 15:23:16.000000000 -0400
+++ Imaging-1.1.6b1/PIL/Image.py 2006-07-06 15:23:35.000000000 -0400
@@ -1738,7 +1738,7 @@
if decoder_name == "raw":
if args == ():
- args = mode, 0, -1
+ args = mode, 0, 1
if args[0] in _MAPMODES:
im = new(mode, (1,1))
im = im._new(
Sorry to make a fuss about this if there is a rationale for the
difference between fromstring() and frombuffer().
Thanks very much,
Dan
More information about the Image-SIG
mailing list