Generando imagen en Python usando almohada (PIL)

Estoy tratando de generar una imagen completamente negra de 100×100 con Python (v2.7.2) y Pillow (v2.4.0) y obtengo un resultado muy extraño.

Este es mi codigo

from PIL import Image im = Image.frombytes('L', (100, 100), bytes([0] * 100 * 100)) im.show() 

Este es mi resultado (ampliado y por favor ignore el borde gris – viene de OS X Preview). La imagen debe ser negra, pero no lo es.

¿Qué estoy haciendo mal?

Imagen generada por Pillow; Algo esta mal

El resultado de los bytes([0] * 10) es la cadena "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]" . Por lo tanto, los colores de sus píxeles son los códigos ASCII de ']' símbolos '[' , '0' , ',' , ' ' y ']' .

Para obtener la cadena de bytes de cero bytes, use bytes("\x00" * 100 * 100) lugar. Aquí \x00 es el byte con valor hexadecimal 00 .

En realidad, ni siquiera necesita bytes(...) llamada. bytes es el tipo solo en Python 3.x. En Python 2.7.x bytes es solo un alias para str .

Entonces, el código final debería ser:

 from PIL import Image im = Image.frombytes('L', (100, 100), "\x00" * 100 * 100) im.show()