我在访问从存储为 bytea 的数据库中处理的图像时遇到问题,这是我调整图像大小的方法。
CREATE OR REPLACE FUNCTION public.ajustar(randstring bytea)
RETURNS bytea
LANGUAGE plpythonu
AS $function$
from io import BytesIO
import PIL
from PIL import Image
basewidth = 300
mem_file = BytesIO()
mem_file.write(randstring)
img = Image.open(mem_file)
wpercent = (basewidth/float(img.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
img = img.resize((basewidth,hsize), PIL.Image.ANTIALIAS)
img.close()
return img
$function$;
所以我的问题是返回一个字节但得到一个地址,我怎样才能得到图像而不是地址?它工作的唯一方法是将img保存到一个文件中img.save('/home/postgres/imagen.jpg')
,而不是我需要放入一个对象来替换数据库中的图像。
pruebas=# select encode(ajustar(foto), 'escape') from personal where id=193;
encode
------------------------------------------------------------
<PIL.Image.Image image mode=RGB size=300x347 at 0x1895990>
(1 fila)
提前致谢