Autor Zpráva
kozusnik.jan
Profil *
Ahoj, řeším problém, jak smazat img element z canvasu. Jako dobré řešení po dlouhém hledání mi přišlo prostě vzít jednotlivé pixely obrázku a nastavit je všechny na bílou barvu. Problém je v tom, že to nefunguje. Nevíte, kde je chyba? Děkuji

function removeImage(ctx, canvas)
{
   
   var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);  
   var pixels = imageData.data;  
   var numPixels = canvas.width * canvas.height;  
   for (var i = 0; i < numPixels; i++) {   pixels[i*4] = 0; // Red  
    pixels[i*4+1] = 0; // Green  
    pixels[i*4+2] = 0; // Blue  
    };  
}


function drawShadow(view, zoomed){
// create canvas
canvas = document.getElementById("cv");
ctx = canvas.getContext("2d");
canvasWidth = canvas.width;            // create img
canvasHeight = canvas.height;
removeImage(ctx, canvas);
var img = document.createElement("img");
            img.onload = function() {
                ctx.drawImage(img, 0, 0);
getMyImgData(ctx, canvas, view)
            }
       if(view == 'entrance')  {   img.src = "images/shadowMaps/entranceShadow.png";}
       if(view == 'shops') { 
           if(zoomed == 0) {img.src = "images/shadowMaps/shopsShadow.PNG";}
           if(zoomed == 1) {img.src = "images/shadowMaps/shopsZoomedShadow.PNG"; }
   }
}
1Pupik1989
Profil
Metodou clearRect, nakonec jsem zjistil, že rychlejší způsob není. Metoda cyklu a překreslování pixelů je zbytečně náročná.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: