PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile (précédentes versions) → Photo Windev Mobile Andoid 20 envoyé à Web Service Windev 20
Photo Windev Mobile Andoid 20 envoyé à Web Service Windev 20
Débuté par ChouLAGH, 12 jan. 2017 19:26 - 4 réponses
Membre enregistré
91 messages
Posté le 12 janvier 2017 - 19:26
Bonjour,
Je sais que le sujet a déjà été abordé mais je suis perdu car je ne trouve pas de solution complète qui va.
Voici la problèmatique :
1) dans une application Windev Mobile 20 en Android :
dans une fenêtre je prends une photo et je l'affiche dans un champ image : pas de problème :
================================
IMG_Photo=""
// Prise d'une photo : variable sPhoto est une chaine déclarée au niveau de la fen
VidéoParamètre(vipRotationAuto,Vrai)
sPhoto= VidéoLanceAppli(viCaptureImage)
SI sPhoto<>"" ALORS
IMG_Photo=sPhoto
SINON
IMG_Photo=""
FIN
================================

2) dans le clic d'un autre de cette fenêtre Android : je crypte la photo et je l'envoie à un Web Service écrit par
Windev 20 et déployer sur le CLoud PC Soft.
==================================
// Récupération du contenu de l'image

bufFichier est un Buffer = fChargeBuffer(sPhoto)
bufCle est un Buffer = HashChaîne(HA_MD5_128, "123456789012345")
bufCrypte est un Buffer = CrypteStandard(bufFichier, bufCle, crypteAES128)

// appeler le WebService pour stocker la photo
// je lui pase un identifiant, un mot de passe, un numéro de tél et le buffer ci-dessys
sReponse est une chaîne=stockerPhoto("clag....","La......","+33611.......",bufCrypte)
Info(sReponse)
=====================================
j'obtiens une réponse OK qui veut dire que le Web service a bien écrit quelque chose dans la BD


3) Le Web service et sa fonction "stockerPhoto a accès à une BD Hyperfile dans laquelle : il y a un fichier Participants :
je modifie la photo, la date modif et heure modif
======================================
PROCEDURE stockerPhoto(sIdentifiant est une chaîne,sMdp est une chaîne,sTelMind est une chaîne,bufSPhoto est un Buffer)
sRep est une chaîne=""
SI sIdentifiant=gsIDpourWS ET sMdp=gsPWDpourWS ALORS
SI HLitRecherche(Participants,telMIndic,sTelMind,hIdentique)=Vrai ALORS
bufCle est un Buffer = HashChaîne(HA_MD5_128, "123456789012345")
sRésultat est un Buffer = DécrypteStandard(bufSPhoto, bufCle, crypteAES128)
sphoto est une Image=sRésultat
Participants.photo=sRésultat
Participants.dateModification=DateSys()
Participants.heureModif=HeureSys()
HModifie(Participants)
sRep="OK"
SINON
sRep="KO non trouvé"
FIN
SINON
sRep="KO identifiants"
FIN
RENVOYER sRep
===========================================
RESULTAT : je reçois dans l'application mobile la réponse OK mais quand j'examine le fichier Participants :
la photo est absente mais la date et l'heure modif sont bien renseignées.
============================================
Sujet maintes fois abordés mais ça n'empêche que je tourne en rond.

Si une âme charitable peut m'aider

merci

--
Chouaïb

--
Chouaïb
Membre enregistré
91 messages
Posté le 12 janvier 2017 - 21:58
Je me réponds à moi même car j'ai trouvé la solution grâce à une autre discussion dans ce même forum.
Donc si cela peut faire gagner du temps
==================================
1) Application Windev Mobile 20 Android :
==================================
Une fenêtre contenant un bouton pour prendre une photo, un champ image pour visualiser la photo prise et un bouton pour envoyer la photo au webservice windev
====================
1.1) Code Bouton prendre photo :
====================
IMG_Photo=""
// Prise d'une photo
VidéoParamètre(vipRotationAuto,Vrai)
sPhoto= VidéoLanceAppli(viCaptureImage) // sPhoto est une variable chaine déclarée au niveau de la fenetre
SI sPhoto<>"" ALORS
IMG_Photo=sPhoto
SINON
IMG_Photo=""
FIN
======================
1.2) code bouton pour envoyer la photo au webservice
======================
// Récupération du contenu de l'image
bufFichier est un Buffer = fChargeBuffer(sPhoto)
sPhotoHexa est une chaîne=BufferVersHexa(bufFichier)

// appeler le WebService pour stocker la photo : je lui passe un identifiant, un mot de passe, un n° telephone et la photo
sReponse est une chaîne=stockerPhoto("clag....","La.....","+336.....",sPhotoHexa)
Info(sReponse)
//
====================================
2) Le Webservice réalisé avec Windev 20
====================================
PROCEDURE stockerPhoto(sIdentifiant est une chaîne,sMdp est une chaîne,sTelMind est une chaîne,sPhoto est une chaîne)
sRep est une chaîne=""
SI sIdentifiant=gsIDpourWS ET sMdp=gsPWDpourWS ALORS
SI HLitRecherche(Participants,telMIndic,sTelMind,hIdentique)=Vrai ALORS
bufSPhotoBuffer est un Buffer = HexaVersBuffer(sPhoto)

sLaphoto est une Image=bufSPhotoBuffer
Participants.photo=sLaphoto
Participants.dateModification=DateSys()
Participants.heureModif=HeureSys()
HModifie(Participants)
sRep="OK"
SINON
sRep="KO non trouvé"
FIN
SINON
sRep="KO identifiants"
FIN
RENVOYER sRep

=================================================================
// ca marche : la photo est bien enregistrée dans le fichier HF : elles est de type son, image, binaire

Merci de votre Aide

--
Chouaïb
Membre enregistré
13 messages
Posté le 19 mars 2017 - 00:00
bonjour,

Merci beaucoup pour ta solution. cependant, j'aurai une question. tu n'aurais pas un moyen pour réduire le poids et la taille de l'image ?
Membre enregistré
91 messages
Posté le 20 mars 2017 - 11:12
Bonjour Fres-SQS,
Pour réduire la taille de ma photo, j'ai procédé ainsi :
1) dans ma fen Android , je crée deux champs Images : IMG_Photo et IMG_Photo2. ce dernier est de hauteur et largeur plus petites et invisible
IMG_Photo montre la photo prise et
je fais IMG_Photo2=IMG_Photo

2) j'envoie au webservice IMG_Photo2 qui est de plus petite taile.

Cordialement

--
Chouaïb
Membre enregistré
13 messages
Posté le 21 mars 2017 - 04:43
Bonjour ChouLAGH,

Merci pour la réponse. J'ai justement, fait un peu comme cela. la photo que je prend est placé dans un champ image de 135x75. Mais Windev Mobile va chercher le fichier dans la bibliothèque et donc l'envoyer dans sa taille originale.