PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Orientation Image IOS et Android
Orientation Image IOS et Android
Débuté par Cramois Gildas, 24 aoû. 2017 14:40 - 17 réponses
Posté le 24 août 2017 - 14:40
Bonjour,

J'ai besoin de prendre des photos avec une applications présentes sur IOS et Android et je dois afficher les photos dans des listes répétées sur l'application.
Jusque là, il n y a pas de problème particulier.
Par contre, comme il est impossible de récupérer les données EXIF d'une image sur PC Soft, l'image ne s'affiche pas dans le bon sens lorsque l'utilisateur a pris le cliché à 90°..
Il a bien évidemment sur Android l'option qui permet d'afficher les images suivant les données EXIF mais comme je dois redimensionner les images pour les stocker, je perds les données EXIF et elles ne s'affichent pas dans le bon sens.

J'ai vu sur les forums que certains utilisent un champ image pouvez m'éclairer sur le sujet ?

Cordialement
Gildas
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 24 août 2017 - 14:54
Bonjour,

Peut-être essayer avec un dRotation

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Posté le 24 août 2017 - 15:01
Bonjour Philippe,

Effectivement le drotation serait utile pour tourner l'image, mais mon problème c'est que je ne sais pas dans quel sens est l'image puisque WindevMobile ne peux pas simplement lire les données EXIF donc il m'est impossible de savoir si je dois tourner l'image ou PAS.
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 24 août 2017 - 16:03
Si largeur > hauteur alors paysage sinon portrait. Je pense que ca doit marcher.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Posté le 24 août 2017 - 16:50
ce serait trop simple, ton image est prise en 16/9, donc la hauteur ne varie pas en fonction du sens de ton appareil.
Elle reste la même , c'est juste l'orientation qui varie.
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 24 août 2017 - 17:10
je disais ça parce que ça marche pour l'écran... Tu dois pouvoir sortir les données exif en java sinon non ?

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 24 août 2017 - 17:29
Regarde cette classe: android.media.ExifInterface (https://developer.android.com/reference/android/media/ExifInterface.html)

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
57 messages
Popularité : +2 (2 votes)
Posté le 25 août 2017 - 09:05
Bonjour Philippe,

Merci pour ton aide, j avais vu cette classe mais je t'avoue que je n'ai jamais utiliser java donc je ne sais pas trop comment je dois importer la classe dans Windev..
Je vais essayer de regarder mais si tu l'as déjà je suis preneur.

merci
Gildas

--
CRAM49
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 25 août 2017 - 21:15
Bonjour Gildas,

voici le code de ma procédure Java qui renvoie l'angle d'une photo selon le EXIF du fichier passé en paramètre :

import android.media.ExifInterface;
import java.io.IOException;

public static int exifRotation(String filepath) {

int rotation = 0;

try
{
ExifInterface exifInterface = new ExifInterface(filepath);
int exifRotationInt = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);

if(exifRotationInt != ExifInterface.ORIENTATION_UNDEFINED)
{
switch(exifRotationInt)
{
case ExifInterface.ORIENTATION_ROTATE_90 :
rotation = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180 :
rotation = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270 :
rotation = 270;
break;
}
}
}
catch(IOException e){}

return rotation;

}
Membre enregistré
57 messages
Popularité : +2 (2 votes)
Posté le 28 août 2017 - 11:39
merci beaucoup pour ton aide.
je vais tester de suite.

--
CRAM49
Membre enregistré
57 messages
Popularité : +2 (2 votes)
Posté le 05 septembre 2017 - 09:17
Bonjour Gaël,

Merci beaucoup pour ta fonction, ça fonctionne parfaitement.

Cordialement

--
CRAM49
Membre enregistré
309 messages
Popularité : +31 (37 votes)
Posté le 05 septembre 2017 - 10:17
Bonjour,
Une suggestion simple (ou simpliste) ...

Puisque vous perdez les données exif après redimensionnement, pourquoi ne pas indiquer l'orientation d'origine dans le nom du fichier généré (image_paysage_blabla.jpg) ?

Il suffira de lire la 2eme partie du nom de fichier pour afficher l'image dans le bon sens.

A moins que je n'aie rien compris au problème...

Bon dev.
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 05 septembre 2017 - 12:32
Ravi d'avoir pu aider, Gildas. ;)
Posté le 18 mars 2018 - 20:17
Bonjour

pourriez-vous m'indiquer comment vous avez implémenter la fonction java dans votre application.

Merci d'avance
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 19 mars 2018 - 06:07
Bonjour,

Il suffit de créer une procédure locale, de la passer en JAVA et cliquant WL sur le bandeau en haut de la procédure puis de saisir le code. Ensuite tu peux l'appeler comme n'importe quelle autre procédure Windev.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 19 mars 2018 - 08:18
Il faut créer une procédure globale et non locale, désolé mes doigts ont fourchés...

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Posté le 20 janvier 2024 - 10:04
Bonjour Gaël, et merci par avance de votre réponse.

Je pense que votre procédure est celle que je cherche depuis un bon moment..
J'ai effectivement le phénomène de rotation (parfois) après redimensionnement d'une prise de photo.

Ma question.
Je ne trouve pas comment implémenter votre procédure et comment récupérer ?
Avant après dRedimensionnne ?
voilà ce que je fais actuellement et cela ne fonctionne pas
****************************************
SI sCheminImage<>"" ALORS
IMG_Image = sCheminImage
toto = IMG_Image

dRedimensionne(toto, 140,180)

SI PAS EnModeSimulateur () ALORS
exifRotation(sCheminImage)
FIN

IMG_Image = toto
FIN
*********************************
exifRotation étant votre procédure.

Merci de votre aide.
Bien cordialement
Hervé
Posté le 20 janvier 2024 - 10:06
Bonjour.
Comment avez vous fait pour implémenter cette fonction ?
Je ne trouve pas.
Merci de votre aide.
Bien cordialement
Hervé