On Fri, Nov 5, 2010 at 7:16 AM, loz.accs <loz.a...@gmail.com> 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  -  Image-SIG@python.org
http://mail.python.org/mailman/listinfo/image-sig

Reply via email to