Bonjour,

J'ai un script qui redimensionne automatiquement les images avant l'upload, récupéré du site https://oldsite.andreafortuna.org/pr...-image-resize/
Il marche nickel pour les images qui ont un poids modérée (quelques ko) mais quand il s'agit d'images plus grosses, cela devient aléatoire, et souvent ça enregistre une image vide de 1ko.
J'ai l'impression qu'il génère le png avant que l'image soit entièrement chargée.

Le javascript n'est pas mon fort , comment faire pour :
- attendre que l'image soit entièrement chargée avant de la créer
- vérifier que l'image soit entièrement chargée

Le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function doUpload() {
        var file = document.getElementById('fileToUpload').files[0];
        var dataUrl = "";
        // Create an image
        var img = document.createElement("img");
        // Create a file reader
        var reader = new FileReader();
        // Set the image once loaded into file reader
        reader.onload = function(e)
        {
            img.src = e.target.result;
 
            var canvas = document.createElement("canvas");
            //var canvas = $("<canvas>", {"id":"testing"})[0];
            var ctx = canvas.getContext("2d");
            ctx.drawImage(img, 0, 0);
 
            // Set Width and Height
            var MAX_WIDTH = 400;
            var MAX_HEIGHT = 300;
            var width = img.width;
            var height = img.height;
 
            if (width > height) {
              if (width > MAX_WIDTH) {
                height *= MAX_WIDTH / width;
                width = MAX_WIDTH;
              }
            } else {
              if (height > MAX_HEIGHT) {
                width *= MAX_HEIGHT / height;
                height = MAX_HEIGHT;
              }
            }
            canvas.width = width;
            canvas.height = height;
            var ctx = canvas.getContext("2d");
            ctx.drawImage(img, 0, 0, width, height);
 
            dataUrl = canvas.toDataURL("image/png");
            document.getElementById('image_preview').src = dataUrl;    
 
            // Post the data
            var fd = new FormData();
            fd.append("image", dataUrl);
 
            var xhr = new XMLHttpRequest();
            xhr.upload.addEventListener("progress", uploadProgress, false);
            xhr.addEventListener("load", uploadComplete, false);
            xhr.addEventListener("error", uploadFailed, false);
            xhr.addEventListener("abort", uploadCanceled, false);
            xhr.open("POST", "savetofile.php");
            xhr.send(fd);
 
        }
        // Load files into file reader
        reader.readAsDataURL(file);
      }
Merci !