Je cherche un moyen de redimensionner une image côté client avec JavaScript (vraiment redimensionner, pas seulement changer la largeur et la hauteur).
Je sais qu'il est possible de le faire en Flash mais j'aimerais l'éviter si possible.
Existe-t-il un algorithme open source quelque part sur le Web?
javascript
image
resize
client-side
géraud
la source
la source
Réponses:
Voici l'essentiel qui fait ceci: https://gist.github.com/dcollien/312bce1270a5f511bf4a
(une version es6 et une version .js qui peuvent être incluses dans une balise de script)
Vous pouvez l'utiliser comme suit:
Il comprend un tas de détection de support et de polyfills pour s'assurer qu'il fonctionne sur autant de navigateurs que je peux gérer.
(il ignore également les images gif - au cas où elles seraient animées)
la source
imageSmoothingEnabled
true` etimageSmoothingQuality
tohigh
. En texte dactylographié, ce bloc ressemble à:const ctx = canvas.getContext('2d'); ctx.imageSmoothingEnabled = true; (ctx as any).imageSmoothingQuality = 'high'; ctx.drawImage(image, 0, 0, width, height);
La réponse à cette question est oui - en HTML 5, vous pouvez redimensionner les images côté client à l'aide de l'élément canvas. Vous pouvez également prendre les nouvelles données et les envoyer à un serveur. Voir ce tutoriel:
http://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/
la source
Si vous redimensionniez avant le téléchargement, je viens de découvrir ceci http://www.plupload.com/
Il fait toute la magie pour vous dans n'importe quelle méthode imaginable.
Malheureusement, le redimensionnement HTML5 n'est pris en charge qu'avec le navigateur Mozilla, mais vous pouvez rediriger d'autres navigateurs vers Flash et Silverlight.
Je viens de l'essayer et cela a fonctionné avec mon Android!
J'utilisais http://swfupload.org/ en flash, il fait très bien le travail, mais la taille de redimensionnement est très petite. (je ne me souviens plus de la limite) et ne revient pas à html4 lorsque le flash n'est pas disponible.
la source
http://nodeca.github.io/pica/demo/
Dans un navigateur moderne, vous pouvez utiliser le canevas pour charger / enregistrer des données d'image. Mais vous devez garder à l'esprit plusieurs choses si vous redimensionnez l'image sur le client:
la source
Peut-être avec la balise canvas (bien que ce ne soit pas portable). Il y a un blog sur la façon de faire pivoter une image avec une toile ici , je suppose que si vous pouvez la faire pivoter, vous pouvez la redimensionner. Peut-être que cela peut être un point de départ.
Voir aussi cette bibliothèque .
la source
Vous pouvez utiliser une infrastructure de traitement d'image javascript pour le traitement d'image côté client avant de télécharger l'image sur le serveur.
Ci-dessous, j'ai utilisé MarvinJ pour créer un code exécutable basé sur l'exemple de la page suivante: "Traitement des images côté client avant de les télécharger sur un serveur"
En gros, j'utilise la méthode Marvin.scale (...) pour redimensionner l'image. Ensuite, je télécharge l'image sous forme de blob (en utilisant la méthode image.toBlob () ). Le serveur répond en fournissant une URL de l'image reçue.
la source
Oui, avec les navigateurs modernes, c'est totalement faisable. Même faisable au point de télécharger le fichier spécifiquement en tant que fichier binaire après avoir effectué un certain nombre de modifications de la toile.
http://jsfiddle.net/bo40drmv/
(cette réponse est une amélioration de la réponse acceptée ici )
En gardant à l'esprit pour attraper le processus de soumission des résultats dans le PHP avec quelque chose qui ressemble à:
Si vous vous inquiétez du point de vue de Vitaly, vous pouvez essayer une partie du recadrage et du redimensionnement sur le jfiddle qui fonctionne.
la source
D'après mon expérience, cet exemple a été la meilleure solution pour télécharger une image redimensionnée: https://zocada.com/compress-resize-images-javascript-browser/
Il utilise la fonctionnalité HTML5 Canvas.
Le code est aussi `` simple '' que celui-ci:
Il n'y a qu'un seul inconvénient avec cette option, et il est lié à la rotation de l'image, en raison de l'ignorance des données EXIF. Sur quoi je travaille en ce moment. Mettra à jour après que j'en ai terminé.
Un autre inconvénient est le manque de support pour IE / Edge, sur lequel je travaille également. Bien qu'il y ait des informations dans le lien ci-dessus. Pour les deux problèmes.
la source