52 votes

Comment puis-je dessiner une image à partir de l'API de fichier HTML5 sur Canvas ?

Je voudrais dessiner une image ouverte avec l'API de fichier HTML5 sur un canevas.

Dans la handleFiles(e) , je peux accéder au fichier avec e.target.files[0] mais je ne peux pas dessiner cette image directement en utilisant drawImage . Comment dessiner une image à partir de l'API File sur un canevas HTML5 ?

Voici le code que j'ai utilisé :

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<script>
window.onload = function() {
    var input = document.getElementById('input');
    input.addEventListener('change', handleFiles);
}

function handleFiles(e) {
    var ctx = document.getElementById('canvas').getContext('2d');
    ctx.drawImage(e.target.files[0], 20,20);
    alert('the image is drawn');
}
</script>
</head>
<body>
<h1>Test</h1>
<input type="file" id="input"/>
<canvas width="400" height="300" id="canvas"/>
</body>
</html>

3voto

Nux Points 1053

Voici un exemple complet (Fiddle) utilisant FileReader (qui a un meilleur support de navigateur comme mentionné par Raynos). Dans cet exemple, je redimensionne également Canvas pour l'adapter à l'image.

Dans un exemple réel, vous pouvez redimensionner l'image au maximum afin que votre formulaire n'explose pas ;-). Voici un exemple avec mise à l'échelle (Fiddle) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X