Salut J'écris une fonction pour casser une grande image en petites tuiles individuelles, et enregistre les tuiles localement via Filesaver.js. Cependant, pour une raison quelconque, la boucle for continue d'écrire uniquement la dernière mosaïque. Par exemple, si j'ai une image et la divise en 4 blocs, et décide seulement d'écrire deux blocs dans la première rangée, les deux sauvegardés les vignettes d'image affichent la deuxième vignette d'image.tranchage d'image, enregistre seulement (via Filesaver.js) la dernière tranche dans l'ordre
J'écris également le numéro de bloc dans le nom de l'image (TestImage_0.jpg & TestImage_1.jpg), mais les deux noms d'image de pavé sont TestImage_1.jpg. Je n'ai aucune idée pourquoi !, même essayé context.clearRect, mais pas de succès. Quelqu'un peut-il m'aider s'il vous plaît ici avec ce problème stupide? Voici ma fonction:
var canvas = document.createElement('canvas');
var TileWidthpx = parseInt(document.getElementById("HorizPPT").value);
var TileHeightpx = parseInt(document.getElementById("VertPPT").value);
canvas.setAttribute('width', TileWidthpx);
canvas.setAttribute('height', TileHeightpx);
for(var i = 0; i < 2; i++)
{
var context = canvas.getContext('2d');
context.clearRect(0,0,canvas.width,canvas.height);
context.drawImage(CoverageImg,i*TileWidthpx,0,TileWidthpx,TileHeightpx,0,0,TileWidthpx,TileHeightpx);
canvas.toBlob(function(blob){saveAs(blob,'TestImage_'+i+'.jpg');}, "image/jpg");
alert('done: '+i);
}
Même si l'alerte affiche la valeur correcte « i » de la boucle ... S'il vous plaît, tout le monde, est-il un peu de javascript async-problème que je suis absent (converti également le algorithme à une promesse, mais cela n'a rien résolu)