Aqui una función en plpython para reducir las imágenes, quedan de aprox 15k
basewidth es el tamaño que quieres de ancho y lo puedes modificar.
Yo lo tengo en un trigger a la hora de insertar ajusto automaticamente el
tamaño. Sólo la he probado en Linux y Windows, Postgresql 9.6.5 y Python
Python 2.7.5 y CentOS 7. Es importante actualizar la libreria pillow de
pyhon a la más reciente o fallará.


CREATE OR REPLACE FUNCTION public.ajustar(randstring bytea)
  RETURNS bytea AS
$BODY$
    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 = BytesIO()
    img.save(salida, format='JPEG')
    hex_data = salida.getvalue()
    img.close()
    return hex_data
$BODY$
  LANGUAGE plpythonu VOLATILE
  COST 100;
--ALTER FUNCTION public.ajustar(bytea)
  --OWNER TO nahum;

Saludos.
Nahum

El 4 de septiembre de 2017, 11:36, jvenegasperu .<jvenegasp...@gmail.com>
escribió:

> Hola todos buen dia
>
> Tengo una base de datos donde los usuarios ingresan fotografias con
> smartphones y en algunos casos las fotos pesan 4 o 5 Megas pero en realidad
> es suficiente con la misma foto pero mas pequeña. digamos de unos 400 KB. y
> no es funcional pedirles a los usuarios que usen una configuracion mas baja
> y no tengo acceso a la aplicacion de donde se recibe la información, asi
> que en este caso lo que hago es barrer periodicamente la base de datos
> extrayendo la foto de la base de datos redimensionandola y volviendo a
> guardar la imagen actualizando el campo en la BD hasta ahi todo bien.
>
> Pero hace unos dias la actividad programada dejo de funcionar por un tema
> de permisos que ya se han restablecido pero me nace la pregunta como puedo
> saber en postgres cuanto pesa un registro o un campo de la base de datos.
> asi podria verificar en que numero de registro se queda la actualización
> del campo imagen y continuar a partir de ahi.
>
> Es posible efectuar algo como select numero_registro from tabla where
> campo_imagen > tamanio_imagen? con alguna función o alguna idea de como se
> podria hacer esto? el campo_imagen es un campo de tipo blob.
>
> saludos y gracias por las soluciones o comentarios que puedan brindarme
>
> Atte
>
> --
> José Mercedes Venegas Acevedo
> cel Mov RPC 964185205
>
> Member of the PHP Documentation Group (Spanish)
>



-- 
*Nahum Castro González*
Blvd. Perdigón 214, Brisas del Lago.
CP 37207
León, Guanajuato, México
Tel (477)1950304
Cel (477)1274694

Reply via email to