je suis conscient du fait que le titre de mon sujet est peu clair, mais j'ai deux questions fort différentes à poser, et je suis un peu embarrassé à l'idée de créer un sujet pour chaque ! Voici mes questions :
Est-il possible de s'assurer dans une application qu'une photo qu'un utilisateur envoie a bien été prise avec son téléphone ? Le meilleur exemple pour cela est Snapchat. Il est impossible d'envoyer une autre photo qu'une que l'on vient de prendre (c'est ce que je souhaite réaliser), toutefois, il me semble qu'il existe des techniques pour réussir malgré tout à envoyer des photos que l'on a dans la mémoire de son smartphone. Est-ce que je me trompe ? Car toute le principe de l'app que je souhaite réaliser repose sur le fait qu'une photo qu'un user va envoyer aura été OBLIGATOIREMENT prise par celui-ci, et qu'il ne puisse donc pas l'avoir récupéré sur internet, ou simplement dans la mémoire de son device. Rassurez-vous, je ne veux pas copier Snapchat, l'app que je souhaite développer n'a rien a voir avec ça.
Y'a-t-il un hébergeur particulier à conseiller pour héberger pas mal de photos ? Les photos prennent vite de la place, donc il me faudrait dans un premier temps un hébergeur qui propose donc un espace de stockage relativement conséquent, sans avoir non plus à payer trop cher. J'ai cru entendre qu'AWS proposait ce genre de service, mais ils ont tellement de produits différents que je ne sais pas lequel choisir. J'ai aussi entendu parler de GoDaddy… Auriez-vous des conseils à ce sujet ?
Pour la première question, c'est très simple: les metadata.
Dans les TIFF, tu trouves le modèle du téléphone/appareil photo qui a pris la photo. Bien sûr, il est possible de modifier ça avec des outils adaptés, mais c'est, je pense, négligeable.
Pour ce qui est de la seconde question, il me reste une interrogation afin de pouvoir répondre: pour quoi faire ?
En effet, est-ce pour un usage professionnel, personnel, ou pour une application ? Bref, quelques détails seraient les bienvenus.
Concernant les metadata : le plus "simple" et efficace, serait donc de faire ceci :
Un user envoie une photo
On récupère le modèle de son téléphone
On analyse la photo pour savoir si elle a bien été prise par ledit modèle
Si oui, on accepte
Sinon, on rejette
N'ayant jamais travaillé avec ce type de métadonnées, je me pose deux questions :
Du coup, si la personne utilise un Samsung Galaxy S3, et récupère une photo prise avec un S3 sur le web, la photo sera acceptée du coup, non ?
Est-ce que ce type de vérification n'est pas trop lourde ? A moins que récupérer les métadonnées d'une photo soit en réalité un traitement pas trop énorme ?
Pour ma seconde question : C'est pour une app que je compte mettre sur le store, ce sera un jeu qui fonctionne avec des photos que l'on prend puis que l'on envoie sur le serveur afin qu'elles soient acceptées ou non par la modération (dans un premier temps, tant qu'il n'y aura pas grand monde dessus, l'idée, à terme, est que la communauté valide ou non les photos). Dans la "vraie vie", j'imagine qu'un serveur adapté à cela coûte très cher, car j'aimerais conserver les photos acceptées, mais dans un premier temps, étant donné que personne ne connaîtra mon app et qu'elle sera donc vide, je pense pouvoir viser le moins cher possible étant donné qu'il y a quand même de fortes chances que l'app reste vide de monde pendant un moment. J'espère que ça répond à ta question ?
Est-il possible de s'assurer dans une application qu'une photo qu'un utilisateur envoie a bien été prise avec son téléphone ? Le meilleur exemple pour cela est Snapchat. Il est impossible d'envoyer une autre photo qu'une que l'on vient de prendre (c'est ce que je souhaite réaliser), toutefois, il me semble qu'il existe des techniques pour réussir malgré tout à envoyer des photos que l'on a dans la mémoire de son smartphone. Est-ce que je me trompe ? Car toute le principe de l'app que je souhaite réaliser repose sur le fait qu'une photo qu'un user va envoyer aura été OBLIGATOIREMENT prise par celui-ci, et qu'il ne puisse donc pas l'avoir récupéré sur internet, ou simplement dans la mémoire de son device. Rassurez-vous, je ne veux pas copier Snapchat, l'app que je souhaite développer n'a rien a voir avec ça.
Comme l'a dit mon VDD, il est possible de vérifier les métadonnées, mais ça implique de devoir connaitre chaque marque de téléphone - ou de tester la résolution, mais certains téléphones prennent de grandes résolutions - car les métadonnées sont différentes pour chaque téléphone, de plus, il est en effet possible de les modifier très simplement…
EDIT : Si on peut récupérer le modèle du téléphone - mais je ne crois pas qu'on puisse -, ta technique est bonne, mais en effet, s'il trouve sur le web un photo prise par le même modèle de téléphone, elle passera.
Est-ce que ce type de vérification n'est pas trop lourde ? A moins que récupérer les métadonnées d'une photo soit en réalité un traitement pas trop énorme ?
Non, les métadonnées peuvent être traitées séparément de la photo, donc la vérification prends même pas une seconde, peut importe le poids de la photo.
Pour un système a pour vocation de devenir grand, AWS est à conseiller, pour sa stabilité, et car tu ne paye que pour ce que tu utilise, si du jour au lendemain tu passe de 10 Mo de photos à 1 Go, tu ne payera 1 Go qu'à partir du jour ou tu en a besoin, de plus, ce n'ets pas limité en nombre, tu peut stocker un gros volume.
Si tes données doivent être consultés en continu, il te faudra un Amazon S3, si elle sont destinés à être consultés un fois de temps en temps, prends un Amazon Glacier, tu peux aussi faire un mix des deux, étant donné que, encore une fois, tu ne paye que pour ce que tu consomme.
Les serveurs Amazon S3 coutent presque rien en bande passante, mais cher en hébergement - 'fin cher, faut pas abuser, non plus, c'est 3 $ des 100 Go - alors que les Glacier coutent très cher en bande passante et très peu en espace de stockage, à toi de voir ce qu'il te faut en fonction de ton app.
Pour voir à peu près combien tout ça te coutera, une estimation chez AWS peut être réalisée directement en ligne, choisis ton ou tes services sur le côté, remplis les champs et regarde le prix sur "Estimate of your Monthly Bill ($ xx.xx)", une grosse partie est offerte les 12 premiers mois, si tu veut voir combien il t'en coutera après ces 12 mois, décoche "FREE USAGE TIER: New Customers get free usage tier for first 12 months" en haut.
EDIT : De ce que je voit de ton message précédent, un S3 sera amplement suffisant, s'il n'y a pas grand monde du ton app, ce sera gratuit les 12 premiers mois et tu payera une somme ridiculement basse ensuite.
Pour ta première question, oui tu as compris le principe. Et on peut récupérer le modèle du téléphone.
Après, récupérer un identifiant de téléphone, ça me semble un peu compliqué. Je ne pense pas que ça soit possible. Si ça l'était, ça serait de toute façon problématique.
Tu t'inquiètes du coût en performances: il n'y aura aucun problème. Voici le lien vers la documentation.
Pour ce qui est de ta seconde question, il est évident que GoDaddy ne te sera d'aucune utilité. Après, si tu veux partir sur AWS, je pense qu'il n'y a pas de problèmes.
Sinon, tu peux toujours prendre un serveur quelconque. Je pense que ça fonctionnera toujours.
Waw, je vous remercie vraiment pour vos réponses très complètes et rapides ! Les informations fournies me sont très utiles, je vais donc passer en résolu. J'ai découvert "ZdS" hier, et je dois dire que je ne suis pas déçu, je retrouve ce que je "vivais" avec la fameuse v3 du SdZ. Merci à vous !
Tant que j'y suis, même si j'ai déjà passé en résolu, j'ai encore une petite question à poser (désolé ).
Y'a-t-il un service particulier à conseiller pour avoir également un petit site web et une base de données ? Le site web ne sera accédé que par moi pour administrer les photos reçues sur le serveur, et gérer ce qui se trouvera sur la base de données. La base de données contiendra ce qu'une BDD classique contient, donc toutes les données des users, les infos sur les photos (pour relier les photos aux users qui les ont prises), …
J'imagine qu'AWS offre ce type de service aussi, mais une fois de plus, ils ont une offre tellement dense…
A priori, mon site sera en PHP, et la BDD en MySQL.
Oui, AWS offre aussi ce genre de services, je peut te conseiller le Amazon EC2, qui est gratuit les douze premiers mois, mais après 1 ans, c’est plutôt cher pour un petit site, donc je te conseillerai de prendre un Amazon S3 pour stocker tes photos et un hébergeur classique (OVH, 1&1, Gandi, …) pour ton espace d'administration qui sera peu visité, ça te coutera moins cher (2 - 4 € pour un petit hébergement)
Je rebondis sur l'idée de lire les infos EXIF : d'une part elles sont modifiables (sans oublier la possibilité d'en récupérer une sur le Net aussi, encore plus simple), donc pas sûr que ce soit si sécurisé que ça.
La possibilité que je verrais c'est de faire des applis natives et de n'autoriser que l'autorisation de la caméra : pas d'accès au stockage via l'appli.
Mais dans tous les cas il restera un point sensible : les gens qui prennent en photo un truc chopé sur Internet, leur ordi, etc. C'est un cas déjà rencontré dans une appli sur laquelle j'ai bossé il y a 2-3 ans et c'est loin d'être simple à gérer et même à détecter (parfois on voit très bien les pixels, mais des fois c'est compliqué de différencier d'une simple photo de mauvaise qualité).
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte