PIL: problem to convert an image array to PIL format
Peter Otten
__peter__ at web.de
Thu Dec 17 09:45:34 EST 2009
Sverre wrote:
> After converting a PIL image in memory to an array with numpy.asarray
> (), I make a adthreshold() with pymorph() with the result, that all
> pixels in the array are either false or true (boolean). But my try to
> convert this back into PIL format is failing
>
> img = Image.fromarray(rawimg, '1')
>
> because a true will be interpreted as integer 1 ), so that 7 pixels
> are black and one white. Has someone a solution, so that a picture
> inly with "true" values doesn't look like this?
>
> http://img707.imageshack.us/img707/6051/p012.jpg
This has come up before, see
http://mail.python.org/pipermail/python-list/2009-October/1221578.html
Image.fromarray() expects one bit per pixel but actually gets one byte. One
possible workaround: introduce an intermediate array with a format
understood by fromarray():
>>> import numpy
>>> from PIL import Image
>>> rawimg = numpy.zeros((20, 20), bool)
>>> rawimg[:10, :10] = rawimg[10:, 10:] = True
>>> b = numpy.array(rawimg, numpy.uint8)
>>> b *= 255
>>> Image.fromarray(b).save("tmp.jpg")
Peter
More information about the Python-list
mailing list