Setting the corner color in rotated PIL images

rzed jello at comics.com
Fri May 6 08:45:48 EDT 2005


[Following up]

> ----- Original Message -----
> From: "rzed" <jello at comics.com>
> Newsgroups: comp.lang.python
> To: <python-list at python.org>
> Sent: Sunday, May 01, 2005 1:17 PM
> Subject: Setting the corner color in rotated PIL images
> 
> 
>> I'm using PIL to generate some images which may be rotated at
>> the user's option. When they are rotated, the original image is
>> cropped in the new image (which is fine), and the corners are
>> black (which is not, in this case). I can't find any documented
>> way to change the default fill color (if that's what it is) for
>> the corners, and PIL also doesn't seem to support a flood fill.
>> I have created a flood fill in Python, which works but which
>> markedly slows image generation.
>>

"Anthra Norell" <anthra.norell at tiscalinet.ch> wrote in
news:mailman.91.1115117893.6583.python-list at python.org: 

> I just had the same problem the other day. I solved it by
> starting out with an image large enough to retain enough white
> area following the rotation. 
> 
> Frederic
> 

I found another method that doesn't require the larger size and 
cropping :) but does require two copies of the original image :( 
(sort of).

I copy the image and rotate the copy, then I create an all-white 
image of the same size as the original and rotate it by the same 
amount. Then I use ImageChops composite() to combine the rotated 
copy, the original copy, and the black-and-white version 
(parameters in that order). The black corners of the b/w version 
serve as a mask to paste the original corners onto the copy. 

It still seems like a lot of trouble to go to, but I don't think 
there is a ready solution otherwise. I think there's a C-code 
memset of all zeroes that underlies the black corners thing, and 
that's not likely to change.

-- 
rzed



More information about the Python-list mailing list