Image numérique et php [Résolu]

Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
- - Dernière réponse : bouffard
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
- 11 nov. 2005 à 19:12
Bonjour,

J'amerais savoir s'il est possible de récupérer à l'écran grâce à un interface en php une image (photo) provenant d'un appareil photo numérique ou caméra web (qui permet la saisi de photo) ?

Le but est de monté un interface qui permet de prendre localement une photo d'une personne, quel s'affiche automatiquement (sans passer par un éditeur d'image ou autre programme) dans la page de gestion en php et ensuite remplir un formulaire avec des informations relatifs à la personne. Le tout est envoyé sur un serveur dans une basse de donnée mysql et un répertoire dédier au photo.

L'interface de gestion en php est sur un serveur distant. Mais l'utilisateur dois pouvoir saisir la photo localement et la voir tout de suite à l'écran avant qu'elle soit sur le serveur. Donc une partie du formulaire doit réagir localement.

J'espère avoir été assez clair.

Cordialement
________________
Bouffard
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
3
Merci
Bonjour

Voici le code qui j'ai fait pour répondre à mon besoin. C'est du javacript avec du Active X. Celui-ci n'est pas signé, ce qui signifie qu'il n'est pas conseillé de l'utiliser sur le web, mais uniquement en Intranet. Pour que l'Active X fontionne il faut autoriser l'exécution des Active X non-signé dans le navigateur Internet Explorer. Ne fonctionne pas avec d'autre navigateur.

Voici le code (ce code n'est pas fonctionnel seul ou tel quel il faut le modifier pour ses besoins) :

Code javascript

function ValiderForm(){
if (EnvoiePhoto()==false){
alert("Vous devez prendre une photo de l\'accusé avant d\'enregistrer!");
return false
}
return true;
}

//Affiche l'image de l'accusé lors de l'ajout d'un accusé
function Sync_Picture(no_ref) {
var fso, fichier, liste, info="";
fso = new ActiveXObject("Scripting.FileSystemObject"); // Active X
var noref=no_ref;
// Emplacement de la carte mémoire de l'appareil photo
var rep="H:\\DCIM\\100NIKON\";
//Vérifie si le répertoire existe pour aller chercher la photo sur l'appareil
if (fso.FolderExists(rep)){
fichier = fso.GetFolder(rep);
liste = new Enumerator(fichier.files);
for (; !liste.atEnd(); liste.moveNext())
{
info = liste.item();
}
if (info!=""){
//Récupère le nom de l'image
nom_fichier=fso.GetFileName(info);
document.fmodifaddaccuse.photo_accuse.value=noref+".jpg";
//Affiche l'image à l'écran
document.fmodifaddaccuse.image_accuse.src=info;
}else{
alert("Il n\'y a aucune photo de prise sur l\'appareil");
return false;
}
}else{
alert("L\'appareil photo n\'est pas connecté");
}
}
//Lors de l'enregistrement il fait le transfert de la photo dans le répertoire pour cette effect
function EnvoiePhoto(){
var fso, fichier, liste, info="";
fso = new ActiveXObject("Scripting.FileSystemObject");
var noref=document.fmodifaddaccuse.no_reference.value;
var rep="H:\\DCIM\\100NIKON\";
//Vérifie si le répertoire existe pour aller chercher la photo sur l'appareil
if (fso.FolderExists(rep)){
fichier = fso.GetFolder(rep);
liste = new Enumerator(fichier.files);
for (; !liste.atEnd(); liste.moveNext())
{
info = liste.item();
}
if (info!=""){
//Récupère le nom de l'image
nom_fichier=fso.GetFileName(info);
document.fmodifaddaccuse.photo_accuse.value=noref+".jpg";
//Vérifie si le répertoire tmp existe
if (!fso.FolderExists("G:\\EasyPHP1-8\\www\\tmp\")){
fso.CreateFolder("G:\\EasyPHP1-8\\www\\tmp\");} //Créer le répertoire tmp
//Copie la photo dans le répertoire temporaire
fso.CopyFile(info,"G:\\EasyPHP1-8\\www\\tmp\",true);
//Vérifie si la photo existe déjà si oui la supprime avant de la déplacer
var fichier_actuel="G:\\EasyPHP1-8\\www\\tmp\"+nom_fichier;
var nouveau_fichier="G:\\EasyPHP1-8\\www\\photos_accuses\"+noref+".jpg";
if (fso.FileExists(nouveau_fichier)){
fso.DeleteFile(nouveau_fichier); //Supprime la photo
}
//Déplace la photo du répertoire temporaire vers le répertoire pas défaut.
fso.MoveFile(fichier_actuel,nouveau_fichier);
//Efface le contenue de la mémoire de l'appareil photo
liste = new Enumerator(fichier.files);
for (; !liste.atEnd(); liste.moveNext())
{
fso.DeleteFile(liste.item());
}
return true;
}else{
alert("Il n\'y a aucune photo de prise sur l\'appareil");
return false;
}
}else{
alert("L\'appareil photo n\'est pas connecté");
return false;
}
}

HTML et PHP :
<html>
<head>
</head>

<?php
print"<form name="fmodifaddaccuse" action="operationaccuse.php?act=ajout" method="post">";
?>
<?php
//Si $act = ajout ou modif
//Permet à l'utilisateur de faire appaître la photo et de la récupérer sur l'appareil photo
print \"
";
print "";
print ", \";
print\"\";
?>
</td>

</html>

________________
Bouffard

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bouffard
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Hello,

=> J'espère avoir été assez clair.



Pour moi, pas vraiment.

Elle est faite ou et quand et par qui la photo ?

Qu'entends-tu par "localement" ?



Si il fait sa photo a lui, il suffit de l'uploader avec le formulaire, voila tout...?
Commenter la réponse de malalam
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
0
Merci
ReBonjour,

Je vais réexpliquer la situation.

J'ai un interface en php situé sur un serveur distant. À partir d'un poste client j'appel cette interface. Sur mon poste client j'ai un pareil photo numérique (ou une web cam). Je prend une photo d'une personne, celle-ci (photo) doit apparaitre automatiquement à l'écran dans mon interface en php (sans passé par d'autres logiciels d'imagerie), avant même que la photo soit déposé sur le serveur, donc "localement" sur mon poste client. Ensuite je remplie le formulaire pour associer cette photo à la personne. Et je transmet le tout à mon serveur distant pour conserver dans ma bd et un dossier pour les photos, une fois le formulaire remplie.

En bref, sur un poste client je prend une photo, elle apparait à l'écran dans mon interface en php, je remplie un formulaire et j'enregistrement le tout sur mon serveur distant.

Maintement j'espère avoir été clair.

________________
Bouffard
Commenter la réponse de bouffard
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
0
Merci
Une dernière précision,

Je ne veux pas aller chercher la photo avec un bouton "parcourir", lorsque je prends la photo je veux quel soit transmisse directement dans le navigateur web à mon interface php, sur le poste client.

________________
Bouffard
Commenter la réponse de bouffard
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Tu en demandes BEAUCOUP trop.



L'affichage de la photo va dependre de l'appareil. Il faut qu'il soit
branche directement sur le pc...PHP ne saura pas et ne pourra pas aller
la chercher tout seul. Cette image doit etre enregistree apres avoir
ete prise, puis uploader par un formulaire d'upload. Il est IMPOSSIBLE
de la passer directement du client au serveur. Et ce en quelque
language internet que ce soit.

Ce n'est pas de la programmation web dont tu as besoin la, c'est du
developpement complet d'une application client/serveur specifique a tes
besoins.
Commenter la réponse de malalam
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
0
Merci
Bon,



Ok, si je configure l'appareil photo pour que lorsque je prend une
photo, celle-ci s'enregistre automatiquemet sur le pc client en format
ex: jpg dans un répertoire précis. Je présume que c'est possible, sans
passer par d'autres logiciels d'imagerie. Puis-je avec php prendre
cette photo sur mon poste client dans le répertoire en qestion sans
avoir à l'envoyer vers mon serveur? Car comme je l'ai dit je veux
éliminer la partie "bouton parcourir" en quelque sorte je veux pourvoir
visualiser la photo avant de l'envoyer sur le serveur.



Car ce que j'ai compris pour l'instant il faut que je récupère ma photo
en allant parcourir mon poste client et l'envoyer par uploader sur le
serveur, pour quel soit afficher par la suite en réouvrant l'interface.




Pour faire un uploade aucun problème j'en ai souvant fait. Je
veux visualiser et ensuite uploader la photo. Et non pas l'inverse.

________________
Bouffard
Commenter la réponse de bouffard
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Non, c'est impossible. Pour afficher la photo, il faut qu'elle se trouve sur le serveur, pas sur le poste client. PHP se trouve cote serveur, et ne peux donc rien faire cote client. Javascript, html ou autre n'ont pas acces au disque dur du client (encore heureux). Ensuite, une page html est generee...par le serveur! Ensuite, envoyee au client. Et quand on veut afficher une image avec par exemple , l'image doit se trouver sur le serveur. On n'affiche jamais une image se trouvant sur le client, vu qu'on a pas acces au client.

Et pour qu'elle passe du poste client au serveur...il faut l'uploader.
Et les upload directs, ca n'existe pas. Tu ne peux pas eliminer le bouton parcourir du formulaire d'upload, quoi que tu fasses.
Commenter la réponse de malalam
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
0
Merci
Ouin,



Sa m'avance pas, mais je suis fixé sur la chose.

Bref je dois contruire un applet java ou c++ qui s'installe sur le
poste client après autorisation et qui va me permettre de faire
ma visualisation de la photo et la récupérer directement sur l'appareil
photo numérique. Ou faire tout le travaille saisi photo
visualisation, remplir formulaire à même le serveur et permettre au
client de faire que de la consultation.



Ou encore prendre la photo que sur le serveur. L'appareil photo est
branché sur le serveur, lorsqu'une nouvelle photo est prise envoyer un
popup d'ouverture de l'interface et montrer l'image à l'écran sur le
formulaire.



Merci quand même.

________________
Bouffard
Commenter la réponse de bouffard
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
0
Merci
Je viens de pensé à une chose c'est surement faisable de faire un "preview" d'une image sur le navigateur web du client avant d'envoyer l'image. Car sur ce site dans la barre de boutons pour écrire un message il y a la possibilité d'insérer une image dans le texte, en allant la chercher en "parcourrant" le poste client. Et qui s'affiche automatiquement ou presque quand on à sélectionner l'image en question.

Alors si sur le site de code-source ils ont réussi à la faire, je suis sûrement capable de le faire moi aussi. Même si je dois quand même passer par un bouton parcourrir.

La preuve je viens d'insérer une image qui c'est afficher avant que j'envoie ce message.
Par contre ce n'est peut-être pas en php que c'est fait.... Il reste à savoir en quoi, surement en javascript... ou quand tu inséres un "happy-face" l'image ce mes automatiquement dans le texte et apparait tout de suite.
(image test)

________________
Bouffard
Commenter la réponse de bouffard
Messages postés
10843
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
0
Merci
Ben oui, avec un bouton parcourir, je n'ai pas dit le contraire. Mais
pas sans. Et il l'uploade sur le serveur. Meme temporairement.

Bonjour au fait :-) Desole mais je n'ai internet qu'au boulot ici, d'ou ma reponse tardive.
Commenter la réponse de malalam
Messages postés
51
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 mars 2006
0
Merci
Bonjour,

J'ai trouvé deux bouts de code sur le site code-sources pour le javascript qui fait en gros ce que je veux. C'est vraiment basic comme code mais bon sa marche.

Voici les liens :
http://www.javascriptfr.com/forum.v2.aspx?ID=217198
http://www.javascriptfr.com/forum.v2.aspx?ID=144894

En gros il faut soit taper l'adresse local de l'image ou parcourir pour aller la chercher.
Je crois quand "patoullant" un peu les codes je vais arriver à mes fin. De préchargement de l'image automatique sur la page du navigateur web. Une fois celà fais je pourrais mettre le chemin de l'image dans une variable et pourvoir faire un uploade sur le serveur une fois le formulaire complêter.

Pour la connaissance de tous je vais mettre mon code sur ce site dans ce forum et celui de javascript une fois que j'aurais attient le résultat esconté.

Merci Malalam,

Cordialement
________________
Bouffard
Commenter la réponse de bouffard