On, Mon Jan 07, 2008, Lenard Lindstrom wrote:
> Pygame 1.8 for Python 2.5 on Windows:
>
> For a surface with 24 bit pixels, the buffer returned by the get_buffer
> method is not necessarily the same size as the product of the surface's
> width, height, and pixel byte size of 3. The attached program demonstrates.
> This discrepancy breaks the pixels3d function of the new numpyarray module.
Already fixed in SVN, but using a different approach.
The surface's pitch is a the length of one scanline in bytes. Multiplied
with the height of the surface, this gives the absolute byte size:
s.get_pitch () * s.get_height ().
For a 10x10 24bpp surface this'd be 320 bytes, not 300 as your
calculation would cause.
The pixels3d() function was broken, because I thought abusing the strides
and using 4bpp access can do anything for 3 bytes. Do not ask me why I
did that. It is fixed now in rev. 1069.
Regards
Marcus
Attachment:
pgp2a1QUUlv8o.pgp
Description: PGP signature