Это потому, что вы рисуете текст до того, как изображение было загружено и нарисовано.Вы должны нарисовать текст, который должен быть сверху изображения после того, как изображение нарисовано.Попробуйте этот код:
window.onload = function(){
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var imageObj = new Image();
imageObj.onload = function(){
context.drawImage(imageObj, 10, 10);
context.font = "40pt Calibri";
context.fillText("My TEXT!", 20, 20);
};
imageObj.src = "darth-vader.jpg";
};
Пример: