sql >> Base de Datos >  >> NoSQL >> Redis

cómo almacenar una imagen en redis usando python/PIL

Usando PIL 1.1.7, redis-2.7.2 pip module y redis-2.4.10 pude hacer que esto funcionara:

import Image
import redis
import StringIO

output = StringIO.StringIO()
im = Image.open("/home/cwgem/Pictures/portrait.png")
im.save(output, format=im.format)

r = redis.StrictRedis(host='localhost')
r.set('imagedata', output.getvalue())
output.close()

Encontré que Image.tostring no era confiable, por lo que este método usa StringIO para hacer que una cadena parezca un archivo. El format=im.format es necesario porque StringIO no tiene una "extensión". Luego probé que los datos de la imagen se guardaron bien haciendo:

redis-cli --raw get 'imagedata' >test.png

y verificando que obtuve una imagen.