在图像合成后添加文本,HTML5画布

abbott567

我已经使用html5 canvas合并了两个图像和一些文本,但是我似乎无法以与文本相同的方式放置图像。对于文本,我只是更改了x和y属性以将其定位在画布上,但这似乎不适用于我的两个图像。无论如何,它们都仅设置为0、0(左上方)。

<canvas width="850" height="450" id="canvas"></canvas>

<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img1 = loadImage('<%= image_url(@entry.picture(:small)) %>', main);
var img2 = loadImage("<%= image_url('overlay.png') %>", main);

var imagesLoaded = 0;
function main() {
    imagesLoaded += 1;

    if(imagesLoaded == 2) {
        // composite now
        ctx.drawImage(img1, 0, 0);

        ctx.globalAlpha = 1;
        ctx.drawImage(img2, 0, 0);
    }

}

function loadImage(src, onload) {
    var img = new Image();

    img.onload = function() {
        ctx.drawImage(img, 0, 0);
        ctx.font="30px sans-serif";
        ctx.fillText("<%= full_name(@entry.user) %>", 60, 435);
        ctx.fillStyle="#333333";
    };
    img.src = src;

    return img;

}
</script>

在我的脑海中,ctx.drawImage(img1, 0, 0,);当0和0的值更改时,该行应该将图像定位,但是没有改变。我的Java语言知识不是很好,所以可能有些明显的东西,但是我无法弄清楚。任何帮助将不胜感激。

谢谢。

有多种样式的代码可用于预加载图像,以确保在尝试使用drawImage以下方式绘制图像之前将其完全加载

在此处输入图片说明

这是带注释的代码和演示:

// canvas related variables
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;

// put the paths to your images in imageURLs[]
var imageURLs=[];  
imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/multple/face1.png");
imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/multple/face2.png");

// the loaded images will be placed in imgs[]
var imgs=[];
var imagesOK=0;
startLoadingAllImages(imagesAreNowLoaded);

// Create a new Image() for each item in imageURLs[]
// When all images are loaded, run the callback (==imagesAreNowLoaded)
function startLoadingAllImages(callback){

  // iterate through the imageURLs array and create new images for each
  for (var i=0; i<imageURLs.length; i++) {
    // create a new image an push it into the imgs[] array
    var img = new Image();
    imgs.push(img);
    // when this image loads, call this img.onload
    img.onload = function(){ 
      // this img loaded, increment the image counter
      imagesOK++; 
      // if we've loaded all images, call the callback
      if (imagesOK>=imageURLs.length ) {
        callback();
      }
    };
    // notify if there's an error
    img.onerror=function(){alert("image load failed");} 
    // set img properties
    img.src = imageURLs[i];
  }      
}

// All the images are now loaded
// Do drawImage & fillText
function imagesAreNowLoaded(){

  // the imgs[] array now holds fully loaded images
  // the imgs[] are in the same order as imageURLs[]

  ctx.font="30px sans-serif";
  ctx.fillStyle="#333333";

  // drawImage the first image (face1.png) from imgs[0]
  // and fillText its label below the image
  ctx.drawImage(imgs[0],0,10);
  ctx.fillText("face1.png", 0, 135);

  // drawImage the first image (face2.png) from imgs[1]
  // and fillText its label below the image
  ctx.drawImage(imgs[1],200,10);
  ctx.fillText("face2.png", 210, 135);

}
body{ background-color: ivory; }
#canvas{border:1px solid red;}
<canvas id="canvas" width=350 height=300></canvas>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

清除画布后未绘制图像(html5画布)

来自分类Dev

HTML5画布叠加图像

来自分类Dev

HTML5画布图像变色

来自分类Dev

HTML5画布-带边框的图像拼贴

来自分类Dev

缩放HTML5画布图像

来自分类Dev

如何下载HTML5画布上的图像?

来自分类Dev

HTML5画布图像上的插图阴影

来自分类Dev

html5画布绘制多个图像

来自分类Dev

HTML5画布-带边框的图像拼贴

来自分类Dev

HTML5画布图像变色

来自分类Dev

拖动并选择HTML5画布中的文本

来自分类Dev

拖动并选择HTML5画布中的文本

来自分类Dev

带有html5画布的径向文本

来自分类Dev

将多个文本实例添加到HTML5画布

来自分类Dev

禁用html5画布

来自分类Dev

了解HTML5画布

来自分类Dev

禁用html5画布

来自分类Dev

HTML5画布脉动

来自分类Dev

HTML5画布脉动

来自分类Dev

使用html5画布中的输入表单中的图像和文本填充活动气泡

来自分类Dev

HTML5画布:在单个画布上的范围内旋转裁剪的图像

来自分类Dev

HTML5画布使圆圈在画布内闪烁

来自分类Dev

如何在HTML5画布内旋转图像而不绘制图像?

来自分类Dev

通过从图像中心旋转并缩放来拉直HTML5画布中的图像

来自分类Dev

在HTML5画布上擦除图像的一部分?

来自分类Dev

在html5画布上拖动图像并调整其大小

来自分类Dev

HTML5画布在背景图像上进行缩放

来自分类Dev

Firefox使用drawImage将SVG图像渲染到HTML5画布时出错

来自分类Dev

在HTML5画布上绘制多个图像有时不起作用