Re: OT? plpython2u
От | Jonathan Rogers |
---|---|
Тема | Re: OT? plpython2u |
Дата | |
Msg-id | 04fdf816-bb06-2cd8-5ea2-269dca900b60@socialserve.com обсуждение исходный текст |
Ответ на | OT? plpython2u (Nahum Castro <nahumcastro@gmail.com>) |
Ответы |
Re: OT? plpython2u
|
Список | psycopg |
On 10/20/2016 01:14 PM, Nahum Castro wrote: > Hello all. > > I need to process images on my database, they are stored on a bytea column. > > The process consist on scaling and I have done this so far: > > CREATE OR REPLACE FUNCTION ajustar(randstring bytea) > RETURNS bytea AS > $$ > import PIL > from PIL import Image > basewidth = 300 > img = randstring > wpercent = (basewidth/float(img.size[0])) > hsize = int((float(img.size[1])*float(wpercent))) > img = img.resize((basewidth,hsize), PIL.Image.ANTIALIAS) > > return img > $$ > LANGUAGE 'plpython2u' VOLATILE; As you probably know, Postgres procedural languages are server-side extensions and therefore have nothing to do with psycopg, which is a client-side library. > > The objective of this pl is read the bytea from the database, scale, > then replace the scaled image in the database, but I don't know what > type use to pass to the variable img. AFAICT, if you pass a bytea value to a plpythonu function, it will receive a Python str object. > > This is the query. > update personal set foto=ajustar(encode(foto, 'hex')::bytea); Why are you encoding the binary data into a textual representation? What image format is stored in column "foto"? Depending on the format, you probably want to use one of these constructors in function "ajustar": http://pillow.readthedocs.io/en/3.4.x/reference/Image.html?highlight=Image#PIL.Image.fromstring http://pillow.readthedocs.io/en/3.4.x/reference/Image.html?highlight=Image#PIL.Image.open -- Jonathan Rogers Socialserve.com by Emphasys Software jrogers@emphasys-software.com -- Jonathan Rogers Socialserve.com by Emphasys Software jrogers@emphasys-software.com
В списке psycopg по дате отправления: