In message <[EMAIL PROTECTED]>, I wrote: > data = string.join(map(chr, data), "") > TypeError: an integer is required
OK, I figured that out, the putpalette call wants a sequence of integers being (R, G, B, R, G, B ...), not a sequence of sequences ((R, G, B), (R, G, B)...). > TheImage = TheImage.convert("P") This gives me 8 bits per pixel, which is too many. And this automatically converts the image using a default palette; a subsequent putpalette call replaces the palette, but doesn't change the pixels, so the colours come out wrong. I can also do Image.convert("1"), which gives me a 1-bit-per-pixel image, but that only allows a fixed colour table (black and white), no option to change either entry. > Also I see that the PIL PNG encoder/decoder supports a "bits" output > option ... Hmm, interesting, but adding either "bits = 2" or "bits = 1" to the save call just seems to turn the image all black. Examination with ImageMagick's "identify" command shows that the default colour table ramp has been stair-stepped, with all components turned into multiples of 51 (= 255 / 5). -- http://mail.python.org/mailman/listinfo/python-list