Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !

10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …

Faire un don 

Retrouver nos membres bienfaiteurs

#1 Fri 21 April 2023 15:00

StéN
Juste Inscrit !
Date d'inscription: 27 Nov 2019
Messages: 1

[Postgres] Redimensionner une image avant intégration

Bonjour,

Je tente de générer une fonction puis le trigger qui fait appel à la fonction pour redimensionner une image avant l'intégration dans table postgres (version 11 pour le moment, très prochainement en V13). Le but est de gérer tout au même endroit. Ces photos sont associées à des objets géographiques, et intégrées en base à partir d'un formulaire d'une application SIG
En cherchant sur le net, il est souvent indiqué d'utiliser l'extention python pour parvenir à mes fins.. mais je suis bloqué. Si certains ont des idées, je suis preneur...

Voici ce que j'ai tenté, sans succès pour le moment :

CREATE OR REPLACE FUNCTION resize_image(image bytea)
RETURNS bytea AS $$
from PIL import Image
import io

max_size = 900

im = Image.open(io.BytesIO(image))

width, height = im.size
if width > height:
    new_width = min(max_size, width)
    new_height = int(new_width * height / width)
else:
    new_height = min(max_size, height)
    new_width = int(new_height * width / height)

im = im.resize((new_width, new_height))

output = io.BytesIO()
im.save(output, format='JPEG')
return output.getvalue()
$$ LANGUAGE plpython3u;


CREATE TRIGGER resize_media
BEFORE INSERT ON media_cameras
FOR EACH ROW
EXECUTE FUNCTION medias.resize_media(NEW.media, 900);


Ce n'est peut-être pas la bonne méthode, si vous en avez une autre qui fonctionne, je prends.
Je vous remercie par avance de votre aide.

Sté

Hors ligne

 

Pied de page des forums

Powered by FluxBB