Re: PIL and swapping colors

Anders Sandvig <[email protected]>
Newsgroups gmane.comp.python.image
Message-ID <[email protected]>
On Fri, Nov 5, 2010 at 7:16 AM, loz.accs <[email protected]> wrote:
> [...]
>
> Image object (Image.fromstring) was created successfully, but red and
> blue colors was swapped.
> So my question: is there any way to swap colors in image using PIL?

My naive (and slow) implementation would be something like this (code not
tested):

def swap(image):
    width, height = image.size()
    res = Image.new("RGBA", (width, height))
    data1 = image.load()
    data2 = res.load()
    for y in range(height):
        for x in range(width):
            r, g, b, a = data1[x, y]
            data2[x, y] = (b, g, r, a)
    del image
    return res

However, be aware that even if the format is BGRx on your machine doesn't
mean it's the same on a different machine (or even on your machine with a
different resolution), as the screen format will depend on the graphics card and
driver.

Usually the drivers will have a way to tell which format the screen is in (i.e.
RGBx or BGRx), so I advice you to check the format and pass this information on
to the Python code, or convert it to RGBx before handing the image buffer over
to Python.


Anders
_______________________________________________
Image-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/image-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.