Exemple code téléchargement multiple images

Tutos et exemples de scripts et de code
Post Reply
Violette
Posts: 119
Joined: 10 Aug 2014, 17:42

Exemple code téléchargement multiple images

Post by Violette »

Code: Select all

Web.prototype.dllImgs = function(url) {
    if (typeof url === 'string') {
        url = [url];
    }
    if (Object.prototype.toString.call(url) === '[object Array]') {
        var a = [], b = [], c = [], d = 0, e = false;
        for (var i = 0; i < url.length; i++) {
            if (typeof url[i] !== 'string') {
                c.push("0 | [" + i + "] n'est pas une chaine de caractère");
                d++;
            } else {
                a[i] = new Web({
                    onFinished : function() {
                        d++;
                    },
                    onError : function(error) {
                        c.push(error);
                    }
                });
                a[i].download(url[i]);
            }
        }
        do {
            if (d === a.length) {
                for (var i = 0; i < a.length; i++) {
                    if (typeof a[i] === "undefined") {
                        b[i] = new Image();
                    } else {
                        b[i] = a[i].toImage();
                    }
                    if (b[i].height() === 0 && b[i].width() === 0) {
                        c.push("1 | L'image [" + i + "] est vide");
                    }
                }
                e = true;
            }
        } while (e === false)
        b.error = c;
        return b;
    } else {
            throw "Need String or Array";
    }
}
Pour l'utiliser :

Code: Select all

var web = new Web()
var arrayWithImages = web.dllImgs(/* Array || string*/); //Array ou string attendu en paramètre. Retourne un tableau contenant la ou les images, tableau.error contient un second tableau avec les messages d'erreurs
Par exemple, si il n'y a qu'une image et que vous voulez connaitre sa taille :

Code: Select all

Console.print(arrayWithImages[0].size()) //Retourne Image [width: x][height: x]
Si plusieurs images :

Code: Select all

var tab = ["http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg", "http://media.mcm.fr/article-1865413-ajust_930/ca-a-bien-change-pokemon.jpg"];
var arrayWithImages = new Web().dllImgs(tab);
for (var i = 0; i < tab.length; i++) {
	Console.print(arrayWithImages[i].size());
}
Pour savoir si il y a des erreurs :

Code: Select all

if (arrayWithImages.error.length === 0) {
    Console.print("Il n'y a pas d'erreur.");
} else {
    Console.print("Il y a " + arrayWithImages.error.length + " erreurs.";
}
/!\ Toute les entrées du tableau sont traitées, si l'entrée n'est pas valide (objet à la place d'une string, url menant à un résultat textuel à la place d'une images, url invalide, etc) un objet image sera quand même renvoyé, vide (de taille 0, 0). Aucune case du tableau ne peux être indéfini. Concordance de l'index entre le tableau d'entrée (url) et celui de sortie (obj image).

Chez moi environ 550 ms pour télécharger 10 images de 52ko donc c'est assez rapide.

Edit : Correction + amélioration
Post Reply