[ js]acces propriétés "images" sans le menu con

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
gcyrillus
Arias
Messages : 5
Inscription : 29 sept. 2006, 23:54

[ js]acces propriétés "images" sans le menu con

Message par gcyrillus »

bonjour a tous .

avec un click droit sur une image on obtient le menu contextuel habituel et dans celui-ci il y a l'option "propriétés" qui nous donnent plusieurs infos .

Comment est t-il possible en javascript d'acceder a ces infos a partir de Firefoxe, par exemple afficher la taille(fileSize dans IE ) du fichiers image ?

Merci :)



Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
Dernière modification par gcyrillus le 01 oct. 2006, 22:40, modifié 1 fois.
teoli2003
Animal mythique
Messages : 7580
Inscription : 13 nov. 2005, 09:23

Message par teoli2003 »

Cela dépend de l'endroit où est positionné le js.

Si le js est transmis avec la page, ce n'est pas possible (sauf si tu transfères l'info dans la page).

Si c'est un js faisant partie d'une extension, c'est possible.

Quel est ton cas?

Message envoyé avec : Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr-FR; rv:1.8.1) Gecko/20060929 BonEcho/2.0
La liberté n'est jamais accordée de bon gré par l'oppresseur; elle doit être exigée par l'opprimé (Martin Luther King).
Les convictions sont des ennemis de la vérité plus dangereux que les mensonges. (Nietzsche).
Native Mozillian.
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Je plussoie teoli2003, néanmoins tu peux récupérer la hauteur et la largeur de l'image dans le contexte de la page, voir les méthodes getComputedStyle() (standardisée) et currentStyle[] (MS).

http://www.quirksmode.org/dom/getstyles.html
gcyrillus
Arias
Messages : 5
Inscription : 29 sept. 2006, 23:54

Message par gcyrillus »

bonjour,

tout d'abord merci de votre interet :)

->teol12003
le js est placé dans l'entete de la page en test , le fichier , dans le cas d'une image , est affiché dans la page et a fortiori dans le cache du navigateur , d'ou l'idée qu'il devrait etre "possible" d'en savoir un peu plus sans outrepasser des régles de securité" .

extension ? , ah oui tiens , j'ai la "web develloper tool bar " , mais je n'ai pas souvenir si l'acces a "proprietés" dans le menu contextuel en depend ou si c'etait deja avec la version de base de firefox , d'ailleurs elle vient avec une option qui permet d'afficher la tailles des images dans la page web elle même , ... heu ... comment fait-elle ? .

-> martin Je cherche effectivement a recupere la taille du fichier image , et non ses dimensions .IE fait ça avec fileSize , je cherche , a savoir si une methode equivalente en javascript (pour navigateurs recent , en particulier firefox/mozilla) existe ?

Il semblerait, au vu des infos que j'ai glaner , et comprise avec mes faibles "competences" qu'il est necessaire de se sevir (tout simplement d'un langage serveur ... pour une page en ligne), mais qu'une page en locale ou en cache necessiterait l'utilisation d'un "programme" externe pour recuperer ces valeurs et les reinjecter ensuite dans la page (java ? , autre ? ).
Pourtant dans le cas d'une image elle est bien inserer dans le contenu html et afficher sans l'aide d'un plug-in quelquonque en "surcouche" logiciel ?! , comme le serait un fichier "flash" par exemple .

GC

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Je n'ai pas la solution, mais je pense qu'il y en a certainement une, et qu'elle doit se trouver dans la documentation DOM de Mozilla : http://developer.mozilla.org/en/docs/DOM
Tu peux aussi essayer de te pencher sur l'inspecteur DOM. Je vois en particulier naturalHeight et naturalWidth qui pourraient s'avérer plutôt intéressants. Je ne sais pas si ça fait partie du DOM… je pense que non, c'est certainement l'origine du problème :?

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.7) Gecko/20060921 Firedragon/dapper-security Firefox/1.5.0.7
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

gcyrillus a écrit :Il semblerait, au vu des infos que j'ai glaner , et comprise avec mes faibles "competences" qu'il est necessaire de se sevir (tout simplement d'un langage serveur ... pour une page en ligne), mais qu'une page en locale ou en cache necessiterait l'utilisation d'un "programme" externe pour recuperer ces valeurs et les reinjecter ensuite dans la page (java ? , autre ? ).
C'est correct.
Pourtant dans le cas d'une image elle est bien inserer dans le contenu html et afficher sans l'aide d'un plug-in quelquonque en "surcouche" logiciel ?! , comme le serait un fichier "flash" par exemple .
La taille sur le disque est une fonction du système de fichiers, elle peut donc être lue sur le serveur ou, localement, en accédant au disque dur, ce que JavaScript n'est pas autorisé à faire. Du point de vue de la page, les images ne sont pas vues au format initial (PNG, GIF, BMP, etc.), mais ont été converties dans une structure mémoire différente, identique pour toutes les images (qui fait je pense 32bits par pixel).
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

gcyrillus a écrit : -> martin Je cherche effectivement a recupere la taille du fichier image , et non ses dimensions .IE fait ça avec fileSize , je cherche , a savoir si une methode equivalente en javascript (pour navigateurs recent , en particulier firefox/mozilla) existe ?
ah pardon, j'avais pas pigé.
Effectivement je ne vois pas de solution "simple".
Un requête js au serveur (XMLHttpRequest), faisant appel à un script php ou intervient filesize(), récupérer le résultat dans la page...
gcyrillus
Arias
Messages : 5
Inscription : 29 sept. 2006, 23:54

Message par gcyrillus »

bonsoir,
je rentre juste :oops:

Calimo ->naturalHeight et naturalWidth semblent tres interessant en effet , je vais essayer d'en savoir un peu plus. :)

Benoit -> oui , j'avais pensée a estimer la taille en fonction de son extension et de ses dimensions , sans creuser plus loin en me disant que le "resultat estimé" risqué de se trouver loin de la realitée , peut-etre es-il possible de "compté" le nombre de couleurs utilisé pour l'image , auxquel cas , cela peut peut-etre une piste .
Je n'imaginais pas que l'image pouvait-etre retraitée avant affichage, info tres interessante aussi :)
->/
Pour le moment a defaut de solution , j'y trouve des infos interessantes et c'est deja trés bien !

GC


<edit/ajout>
Naturalheight et naturalwidth sont utilisable et renvoi bien les hauteurs et largeurs reelles de l'image (et non css ).
IE ne comprend pas , ... voici un script permettant en principe d'outrepasser cette "ignorance" de IE:
(je ne sais pas si IE7 implemente ces attributs dans le dom ou si il les ignores encore).

Code : Tout sélectionner

 function getNaturalHeight(img) {
        if( img.naturalHeight ) {
            return img.naturalHeight;
        } else {
            lgi = new Image();
            lgi.src = img.src;
            return lgi.height;
        }
    }


 function getNaturalWidth(img) {
        if( img.naturalWidth ) {
            return img.naturalWidth;
        } else {
            lgi = new Image();
            lgi.src = img.src;
            return lgi2.width;
        }
    }
astuce/principe trouvé la en bas de page : http://frakkle.com/pivot/archive.php?c=default
..si ça peut servir ou completer le topic



Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
gcyrillus
Arias
Messages : 5
Inscription : 29 sept. 2006, 23:54

Message par gcyrillus »

Je profite du topic pour laisser mon test sur l'affichages des dimensions réelles d'une image en passant par le DOM (FF/IE):

la fonction javascript

Code : Tout sélectionner

 function getNaturalsize(id,aff) {

//id est la balise image et aff est la balise recevant les infos a afficher 
	var img = document.getElementById(id);// la balise a tester
//initialisation des variables , facultatif
	var haut="non testé";
	var larg="non testé";
	var texte="a remplir";

//recherche de la hauteur de l'image 
        if( img.naturalHeight ) {
            haut= img.naturalHeight;
        } else {
            lgi = new Image();
            lgi.src = img.src;
            haut= lgi.height;
        }
// recherche de la largeur de l'image 
	if( img.naturalWidth ) {
            larg= img.naturalWidth;
        } else {
            lgi = new Image();
            lgi.src = img.src;
            larg= lgi.width;
        }

// on crée un span qui va recevoir les dimensions trouvées et les affichées
	// on recupere les valeurs avec texte explicatif.
	texte='Hauteur : --> '+haut+' pixels.  Largeur : --> '+larg+' pixels .';
//creatio du span 
 var dimension = document.createElement("span");
// on crée le texte pour le span span 
 var lesdimensions  = document.createTextNode(texte);
//on les integre
 dimension.appendChild(lesdimensions);
// on cible le "recepteur"
 var afficher = document.getElementById(aff);
// on affiche enfin !
 afficher.appendChild(dimension);
    }
et le html par exemple

Code : Tout sélectionner

<p id="info">
<img src="votre_image.jpg.gif.png" alt="" id ='lavoir' height='190' width='190'   />
</p>
<p id="p_affiche" onclick="getNaturalsize('lavoir','p_affiche');">Dimensions de l'image(clic !)</p>
++

p.s. Cela ne fonctionne que si l'image est bien affiché dans votre page .
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités