|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Transférer une image WEB dans une BD |
Started by Jean Turcotte, Jan., 14 2022 11:34 PM - 11 replies |
| |
| | | |
|
| |
Registered member 1,120 messages Popularité : +8 (8 votes) |
|
Posted on January, 14 2022 - 11:34 PM |
Bonjour, Mon appli WEB utilise l'API 'domtoimage' pour capturer une portion d'écran vers une Image. Voici en gros mon code JS;
ExtraitZone(alias) { var node = document.getElementById(alias); domtoimage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; var srcImage = dataUrl; alert(srcImage); // Affiche l'image encodée Base64 RenvoyerValeur(srcImage) }) .catch(function (error) { console.error('oops, something went wrong!', error); }); } voici le code de ma procédure RenvoyerValeur;
Procedure RenvoyerValeur(valeur) IMG_ImageFinale = valeur sRésultat = AJAXExecute(ajouteImage, valeur, "Image1") Et voici le code de la procédure serveur ajouteImage;
Procedure ajouteImage(bufImagePublicitaire est un Buffer, sNomImage est une chaîne)
MonImage est une Image MonImage.Largeur = 400 MonImage.Hauteur = 400 MonImage = dChargeImage(bufImagePublicitaire, imgDéfaut, 400, 400) HLitRecherchePremier(T_IMAGES_PUBLICITAIRES, sNom, sNomImage)
T_IMAGES_PUBLICITAIRES.sNom = sNomImage T_IMAGES_PUBLICITAIRES.iImage = MonImage HAjoute(T_IMAGES_PUBLICITAIRES)
J'ai essayé beaucoup de chose mais l'image ne se sauve jamais dans la BD.
Est-ce qu'un programmeur avisé pourrait m'indiquer le chemin svp? Merci!
-- Jean Turcotte WX 27 Android 9.0 sur Galaxy S8 Laptop Lenovo I7 12GB Ram |
| |
| |
| | | |
|
| | |
| |
Registered member 286 messages Popularité : +24 (28 votes) |
|
Posted on January, 16 2022 - 2:39 PM |
Bonjour Jean Juste pour info ... Le type de ton champs T_IMAGES_PUBLICITAIRES.iImage est il un buffer binaire ? Je sauvegarde régulièrement des images dans la DB et je ne rencontre pas ce genre de soucis Bien Cordialement Gemini1961 |
| |
| |
| | | |
|
| | |
| |
Registered member 1,120 messages Popularité : +8 (8 votes) |
|
Posted on January, 16 2022 - 5:10 PM |
Gemini1961 a écrit :
Bonjour Jean Juste pour info ... Le type de ton champs T_IMAGES_PUBLICITAIRES.iImage est il un buffer binaire ? Je sauvegarde régulièrement des images dans la DB et je ne rencontre pas ce genre de soucis Bien Cordialement Gemini1961 J'ai créé 2 champs, un binaire et un text, l'image binaire ne se sauvegarde pas mais celle en texte (Base64) se sauvegarde.
-- Jean Turcotte WX 27 Android 9.0 sur Galaxy S8 Laptop Lenovo I7 12GB Ram |
| |
| |
| | | |
|
| | |
| |
Registered member 286 messages Popularité : +24 (28 votes) |
|
Posted on January, 16 2022 - 10:01 PM |
Bonsoir Jean
... T_IMAGES_PUBLICITAIRES.sNom = sNomImage T_IMAGES_PUBLICITAIRES.iImage = dSauveImageJPEG(MonImage,enMémoire) HAjoute(T_IMAGES_PUBLICITAIRES) ...
Bien cordialement |
| |
| |
| | | |
|
| | |
| |
Registered member 1,120 messages Popularité : +8 (8 votes) |
|
Posted on January, 17 2022 - 1:44 AM |
Gemini1961 a écrit :
Bonsoir Jean ... T_IMAGES_PUBLICITAIRES.sNom = sNomImage T_IMAGES_PUBLICITAIRES.iImage = dSauveImageJPEG(MonImage,enMémoire) HAjoute(T_IMAGES_PUBLICITAIRES) ... Bien cordialement
Bonsoir Gemini, Il doit y avoir quelque chose manquant dans mon code car ça ne fonctionne toujours pas. Voici le code serveur;
Procedure ajouteImage(ImagePublicitaire est une chaîne , sNomImage est une chaîne)
iImageRecu est une Image = ImagePublicitaire
HRAZ(T_IMAGES_PUBLICITAIRES) T_IMAGES_PUBLICITAIRES.sNom = sNomImage T_IMAGES_PUBLICITAIRES.iImage = dSauveImageJPEG(iImageRecu, enMémoire) T_IMAGES_PUBLICITAIRES.bufImage = ImagePublicitaire SI HAjoute(T_IMAGES_PUBLICITAIRES) = FAUX ALORS ErreurInfo(errComplet) FIN As-tu une idée?
-- Jean Turcotte WX 27 Android 9.0 sur Galaxy S8 Laptop Lenovo I7 12GB Ram |
| |
| |
| | | |
|
| | |
| |
Registered member 286 messages Popularité : +24 (28 votes) |
|
Posted on January, 17 2022 - 11:51 AM |
Bonjour Jean Essaye de passer par une variable intermédiaire (buffer) afin de pouvoir afficher la taille du buffer image ... MonBuffer est un buffer = dSauveImageJPEG(iImageRecu, enMémoire) nTaille est un entier = Taille(MonBuffer) ... Essaye d'afficher la variable nTaille ... Cela permettra de savoir sile problème via du HAjoute Bien Cordialement |
| |
| |
| | | |
|
| | |
| |
Registered member 1,120 messages Popularité : +8 (8 votes) |
|
Posted on January, 17 2022 - 2:03 PM |
Juste après le transfert au serveur, le buffer indique >27kb, ce qui me semble correct.
-- Jean Turcotte WX 27 Android 9.0 sur Galaxy S8 Laptop Lenovo I7 12GB Ram |
| |
| |
| | | |
|
| | |
| |
Registered member 1,120 messages Popularité : +8 (8 votes) |
|
Posted on January, 17 2022 - 2:08 PM |
Apres avoir exécuté le Hajoute, voici ce qu'il y a dans la rubrique iImage;
-- Jean Turcotte WX 27 Android 9.0 sur Galaxy S8 Laptop Lenovo I7 12GB Ram |
| |
| |
| | | |
|
| | |
| |
Registered member 1,120 messages Popularité : +8 (8 votes) |
|
Posted on January, 17 2022 - 2:22 PM |
Gemini, je viens de trouver la source de mon probleme, lorsque je passe le buffer directement à la rubrique comme ceci;
HRAZ(T_IMAGES_PUBLICITAIRES) T_IMAGES_PUBLICITAIRES.sNom = sNomImage T_IMAGES_PUBLICITAIRES.iImage = ImagePublicitaire T_IMAGES_PUBLICITAIRES.bufImage = ImagePublicitaire SI HAjoute(T_IMAGES_PUBLICITAIRES) = FAUX ALORS ErreurInfo(errComplet) FIN l'Image s'inscrit dans la rubrique et je suis capable de la lire et de la ré-intégrer dans un champ Image, c'est super. Le problème est que je ne vois pas l'image dans le centre de contrôle;
Pourquoi ne puis-je pas voir les images dans le CC?
-- Jean Turcotte WX 27 Android 9.0 sur Galaxy S8 Laptop Lenovo I7 12GB Ram |
| |
| |
| | | |
|
| | |
| |
Registered member 286 messages Popularité : +24 (28 votes) |
|
Posted on January, 17 2022 - 2:41 PM |
Cela reste un mystère L'essentiel étant que ton problème soit résolu De mon côté afin d'optimiser la DB je compresse mon buffer photo avant HAjoute et je le décompresse avant de le lié au champ image Bon continuation Gemini1961 |
| |
| |
| | | |
|
| | |
| |
Registered member 476 messages Popularité : +20 (20 votes) |
|
Posted on January, 17 2022 - 3:22 PM |
Jean Turcotte a écrit :
Pourquoi ne puis-je pas voir les images dans le CC?
Parce que l'image est encodée en base64, il faut prendre la partie data du buffer et la décoder avant de l'enregistrer Dans ton cas le buffer doit ressembler a cela
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASMAAADVCAYAAAAcnJadAAAAAXNSR0IArs4c6QAAIABJREFUeF7tnQmUFNW5x La data codée commence ici au caractère 23, donc pour enregistrer l'image an base de données
Decode(ImagePublicitaire[[23 À ]],encodeBASE64) |
| |
| |
| | | |
|
| | |
| |
Registered member 1,120 messages Popularité : +8 (8 votes) |
|
Posted on January, 17 2022 - 5:50 PM |
stef1811 a écrit :
Jean Turcotte a écrit : Pourquoi ne puis-je pas voir les images dans le CC?
Parce que l'image est encodée en base64, il faut prendre la partie data du buffer et la décoder avant de l'enregistrer Dans ton cas le buffer doit ressembler a cela data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASMAAADVCAYAAAAcnJadAAAAAXNSR0IArs4c6QAAIABJREFUeF7tnQmUFNW5x
La data codée commence ici au caractère 23, donc pour enregistrer l'image an base de données Decode(ImagePublicitaire[[23 À ]],encodeBASE64)
Bonjour Stef, merci pour l'info. J'ai modifié mon code et c'était plutôt le caractère 24 mais ça fonctionne et je vois maintenant les images. La seule problématique maintenant est que l'image ainsi décodée pèse 2 fois plus lourd dans la BD que celle encodée.
-- Jean Turcotte WX 27 Android 9.0 sur Galaxy S8 Laptop Lenovo I7 12GB Ram |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|