Vérifier dimensions d'une image côté client [javascript]

Fermé
lilouaina Messages postés 3 Date d'inscription mardi 9 octobre 2012 Statut Membre Dernière intervention 14 octobre 2012 - 9 oct. 2012 à 08:17
 kaelkaelkael - 12 juin 2015 à 23:27
Bonjour,
Je souhaite créer une fonction (javascript) qui retourne true ou false en fonction de si la taille d'une image choisie à l'aide de la balise <input type="file" /> est inférieur ou supérieur à 800x600px avant d'uploader l'image sur le serveur. NB: je tiens absolument à ce que la fonction retourne une valeur booleenne.
Quelqu'un peut-il m'aider? ça fait des jours que je suis coincée là dessus.

<script type="text/javascript">
function verifTaille(){
file = document.getElementById("myFile").files[0];
window.URL = window.URL || window.webkitURL;
img = new Image();
img.src = window.URL.createObjectURL(file);
if(img.width > 800 || img.height > 600){
return false;
}else{
return true;
}
}

function verifier(){
if (verifTaille()){
alert("votre image est trop grande, veuillez en choisir une autre");
}else{
uploaderFichier();
}
}
</script>

et dans body :

<body>
...
<input id="myFile" type="file" onchange="verifier()">
...
</body>





A voir également:

3 réponses

Blunderer Messages postés 273 Date d'inscription mardi 17 juillet 2012 Statut Membre Dernière intervention 6 décembre 2012 83
9 oct. 2012 à 11:13
Regarde la réponse sur ce post : https://stackoverflow.com/questions/6633190/get-image-height-and-width-in-file-tag-javascript

=> PHP tu peux récupérer
=> JavaScript tu peux pas...
3
lilouaina Messages postés 3 Date d'inscription mardi 9 octobre 2012 Statut Membre Dernière intervention 14 octobre 2012
9 oct. 2012 à 19:16
Merci pour ta réponse. J'ai jeté un coup d'oeil sur le post.
Ce que je trouve énervant, c'est que je peux afficher les dimensions de l'image, mais je ne peux absolument pas les récupérer.

pour l'affichage c'est:

img.onload = function(){
alert(this.width + "x" + this.height);
}
0
lilouaina Messages postés 3 Date d'inscription mardi 9 octobre 2012 Statut Membre Dernière intervention 14 octobre 2012
14 oct. 2012 à 14:31
Pour ceux qui seraient confrontés au même problème, voir la solution ici:
https://openclassrooms.com/forum/sujet/verifier-dimensions-d-une-image-cote-client-91578
0
<input name="getimage" type="file" id="getimage"><p> </p>
<div class="error left-align" id="err-imgsize">Les dimensions de l'image sont trop grandes<p> </p></div>
<div id="imgstore"></div>


<script>
var input = document.getElementById("getimage");

function verifTaille(){
    file =input.files[0];
    window.URL = window.URL || window.webkitURL;
    img = new Image();
    
    img.onload = function(){
        if(img.width > 800 || img.height > 600){
            pasGlop(img.width-800, img.height-600);
        }else{
            glop(img.width, img.height);
        }
    }
    img.src = window.URL.createObjectURL(file);
}
        
function glop(width, height){
    var store = document.getElementById('imgstore');
 store.innerHTML='<img src="' + img.src +'" width="100%">';
}

function pasGlop(width, height){
   

// pour une alerte
 var str = "votre image est trop "
    if(width>0){str+="large de "+width+"px";}
    if(width>0 && height>0){str+=" et trop ";}
    if(height>0){str+="haute de "+height+"px.";}
    alert(str);
 
 var store = document.getElementById('imgstore');
 store.innerHTML='';
 
 document.getElementsByName("getimage")[0].value = ""; //efface le input

 
 //pour une animation, avec le css et la balise class=error
            $('#err-imgsize').show(500);
            $('#err-imgsize').delay(4000);
            $('#err-imgsize').animate({
                height: 'toggle'
            }, 500, function () {
                // Animation complete.
            });
            error = true; // change the error state to true
        
}

input.onchange=verifTaille; 
</script>


.error {
    color: #CF0000;
    display: none;
}
.invisible {
    display:none;
    visibility:visible;
}
0