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