From: | Nahum Castro <nahumcastro(at)gmail(dot)com> |
---|---|
To: | Emanuel Calvo <3manuek(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [psycopg] OT? plpython2u |
Date: | 2016-10-22 13:36:01 |
Message-ID: | CABqArLi9=ThVSwYqOxhT612yQfWePn3FU8y7aP+Ge-bUQ9MFSQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda psycopg |
Perdón es que escriby a la lista de psycopg para que me ayudaran a
convertir entre tipos de python y postgres y copie a la lista de ayuda la
solución.
El proceso fue sólo una vez y lo implemente en un trigger para que se
ajuste la imágen sin importar el tamaño.
Saludos.
Nahum.
2016-10-21 12:24 GMT-05:00 Emanuel Calvo <3manuek(at)gmail(dot)com>:
>
>
> Hey Nahum,
>
> you may want to do that update in batches using id ranges. Also, should
> avoid the
> single transaction method if you have replicas.
>
> BTW, don't know why we are speaking in english, as this is an _español_
> mailing list. Just heads up. :)
>
> Regards,
>
> On Thu, Oct 20, 2016 at 10:27 PM Nahum Castro <nahumcastro(at)gmail(dot)com>
> wrote:
>
>> At last here is the solution to resize images on bytea columns with
>> plpythonu
>> Thanks to all especially to Adrian
>>
>> 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)
>> salida = io.BytesIO
>> img.save(salida, format='JPEG')
>> hex_data = output.getvalue()
>> img.close()
>> return hex_data
>> $function$
>>
>> And here is how to resize all images from database:
>>
>> update personal set foto=ajustar(foto) where foto is not null;
>>
>> 2016-10-20 19:48 GMT-05:00 Nahum Castro <nahumcastro(at)gmail(dot)com>:
>>
>> As far as I know the process to resize the image is:
>>
>> read(bytea) -> load_to_memory(image) -> resize(image) ->
>> recode_to_bytea(image) -> store(bytea)
>>
>> You helped me with the first two.
>>
>> When I run the function ajustar(image)
>> update personal set image=ajustar(image)
>>
>> I tried to do a direct resizing from bytea but python can't understand
>> the hexadecimal data from bytea as an jpeg image. Though I tried with with
>> plpython2u.
>> Thanks
>>
>> 2016-10-20 19:00 GMT-05:00 Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>:
>>
>> On 10/20/2016 04:51 PM, Nahum Castro wrote:
>>
>> Hello Adrian.
>>
>> The result image to replace the big one.
>>
>>
>> So if you are replacing the data in a bytea column with a function that
>> returns bytea, why encode it?
>>
>> Unless I am missing something why not just UPDATE with the raw(bytea)
>> return value?
>>
>>
>> I have a table with images @ 12K but, went on vacation an when returned
>> someone replaced the pictures with high resolution images @6M. The app
>> then become very slow and halted.
>>
>> I have already made the script in python to resize all the images from a
>> folder before to upload to the database, so it occurred to me do the
>> same but on the database.
>>
>> Thanks again.
>>
>> 2016-10-20 18:32 GMT-05:00 Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com
>> <mailto:adrian(dot)klaver(at)aklaver(dot)com>>:
>>
>> On 10/20/2016 02:42 PM, Nahum Castro wrote:
>>
>> Hello,
>>
>> The script always returns.
>> select encode(ajustar(foto), 'escape') from personal where id=193;
>> encode
>> -----------------------------------------------------------------
>> <PIL.Image.Image image mode=RGB size=300x347 at 0x7F08A11B1650>
>>
>>
>>
>> So what do you want it to return a where do you want to return?
>>
>>
>> --
>> Adrian Klaver
>> adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>
>>
>>
>>
>>
>> --
>> *Nahum Castro González*
>> Blvd. Perdigón 214, Brisas del Lago.
>> CP 37207
>> León, Guanajuato, México
>> Tel (477)1950304
>> Cel (477)1274694
>>
>>
>>
>> --
>> Adrian Klaver
>> adrian(dot)klaver(at)aklaver(dot)com
>>
>>
>>
>>
>> --
>> *Nahum Castro González*
>> Blvd. Perdigón 214, Brisas del Lago.
>> CP 37207
>> León, Guanajuato, México
>> Tel (477)1950304
>> Cel (477)1274694
>>
>>
>>
>>
>> --
>> *Nahum Castro González*
>> Blvd. Perdigón 214, Brisas del Lago.
>> CP 37207
>> León, Guanajuato, México
>> Tel (477)1950304
>> Cel (477)1274694
>>
>
--
*Nahum Castro González*
Blvd. Perdigón 214, Brisas del Lago.
CP 37207
León, Guanajuato, México
Tel (477)1950304
Cel (477)1274694
From | Date | Subject | |
---|---|---|---|
Next Message | Kernel | 2016-10-23 17:23:31 | Re: Mensajes a la lista de Ayuda - Tema Consulta recursiva |
Previous Message | Francisco Olarte | 2016-10-22 08:36:54 | Re: Convertir de integer a text |
From | Date | Subject | |
---|---|---|---|
Next Message | Aleksi Häkli | 2016-11-08 12:45:00 | Re: Psycopg2 Windows packaging |
Previous Message | Adrian Klaver | 2016-10-21 17:31:35 | Re: [psycopg] OT? plpython2u |