"Martin v. Löwis" email@example.com wrote:
Josiah Carlson schrieb:
One could also toss wxPython, VTK, or any one of the other GUI libraries into the mix for visualizing those images, of which wxPython just acquired no-copy display of PIL images, and being able to manipulate them with numpy (of which some wxPython built in classes use numpy to speed up manipulation) would be very useful.
I'm doubtful that this PEP alone would allow zero-copy sharing of images for display. Often, the libraries need the data in a different format. So they need to copy, even if they could understand the other format. However, the PEP won't allow "understanding" the format. If I know I have an array of 4-byte values: which of them is R, G, B, and A?
...in the cases I have seen, which includes BMP, TGA, uncompressed TIFF, a handful of platform-specific bitmap formats, etc., you _always_ get them in RGBA order. If the alpha channel is to be left out, then you get them as RGB.
The trick with allowing zero-copy sharing is 1) to understand the format, and 2) to manipulate/display in-place. The former is necessary for the latter, which is what Travis is shooting for. Also, because wxPython has figured out how PIL images are structured, they can do #2, and so far no one has mentioned any examples where the standard RGB/RGBA format hasn't worked for them.
In the case of jpegs (as you mentioned in another message), PIL uncompresses all images it understands into some kind of 'natural' format (from what I understand). For 24/32 bit images, that is RGB or RGBA. For palletized images (gif, 8-bit png, 8-bit bmp, etc.) maybe it is a palletized format, or maybe it is RGB/RGBA? I don't know, all of my images are 24/32 bit, but I can just about guarantee it's not an issue for the case that Paul mentioned.