Redimensionner l'image avant le téléchargement - convertir en toile pour un objet de Fichier

Voici le fragment de code que j'utilise maintenant pour télécharger plusieurs images à l'aide de HTML5 Fichier API:

/**
 * @param {FileList} files
 */
upload: function(files){
    nfiles = files.length;

    for (var i = 0; i < nfiles; i++) {
        /** @var file File **/
        var file = files[i];

        var xhr = new XMLHttpRequest();

        xhr.open("POST", settings.post_upload, true);
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xhr.upload.filenumb = i;
        xhr.filenumb = i;
        xhr.upload.filename = file.name;

        var nef = new FormData();
        nef.append("folder", settings.folder);
        nef.append("file_element", settings.file_elem);
        nef.append("udata", settings.user_data);
        nef.append(settings.file_elem, file);
        xhr.send(nef);

    }
}

Je voudrais redimensionner les images avant charger à l'aide de toile objet, mais ne pas avoir de l'expérience avec cela, je ne sais pas comment mettre à jour le code à l'aide de techniques, par exemple celle décrite ici: HTML5 Pré-redimensionner les images avant de les télécharger

canvas.toDataURL("image/png"); renvoie une chaîne codée. Mais j'ai besoin de mettre la File objet.

Modifier

Comment écririez-vous (raisonnablement) la fonction de navigateur pour la plupart des navigateurs modernes pour redimensionner le Fichier avant de le télécharger, de manutention jpg,png et gif avec transparence:

/** 
 * @param {File} file 
 * @param int max_width
 * @param int max_height
 * @param float compression_ratio
 * @returns File
 */
function resize(file, max_width, max_height, compression_ratio){}
  • quel est le problème avec le serveur côté redimensionnement?
  • +1 sur les raisons de la redimensionner besoins/doit être sur le côté client.
  • Je me figure qu'il veut utiliser le pouvoir des clients au lieu de perdre du CPU sur le serveur par le redimensionnement d'images...
  • Quand je suis à la masse téléchargement de 200 grandes images, je peux économiser beaucoup de temps de transfert et de ressources du serveur.
  • Côté Client, le redimensionnement est le mieux pour la planète. Pourquoi passer des encombrants de transfert des images par le biais de l'internet, manger ressources d'internet? Il est comme tout le monde pense que l'internet fonctionne sur magique poussière de lutin, il n'est pas, il s'exécute sur l'énergie et les émissions de CO2. googleblog.blogspot.com/2009/05/energy-and-internet.html. Envisager la planète prochaine fois que vous écrivez un programme pour redimensionner vos images.
InformationsquelleAutor Sfisioza | 2013-04-13