html5 canvas怎么载入图像

html5 canvas怎么载入图像,第1张

在canvas中显示图片非常简单。可以通过修正层为图片添加印章、拉伸图片或者修改图片等,并且图片通常会成为canvas上的焦点。用HTML5 Canvas API内置的几个简单命令可以轻松地为canvas添加图片内容。

不过,图片增加了canvas *** 作的复杂度:必须等到图片完全加载后才能对其进行 *** 作。浏览器通常会在页面脚本执行的同时异步加载图片。如果试图在图片未完全加载之前就将其呈现到canvas上,那么canvas将不会显示任何图片。因此,开发人员要特别注意,在呈现之前,应确保图片已经加载完毕。

为保证在呈现之前图片已完全加载,我们提供了回调,即仅当图像加载完成时才执行后续代码,如代码清单如下所示。

?

<script type="text/javascript">

function drawBeauty(beauty){

var mycv = document.getElementById("cv")

var myctx = mycv.getContext("2d")

myctx.drawImage(beauty, 0, 0)

}

function load(){

var beauty = new Image()

beauty.src = "http://images.cnblogs.com/cnblogs_com/html5test/359114/r_test.jpg"

if(beauty.complete){

drawBeauty(beauty)

}else{

beauty.onload = function(){

drawBeauty(beauty)

}

beauty.onerror = function(){

window.alert('美女加载失败,请重试')

}

}

}//load

if (document.all) {

window.attachEvent('onload', load)

}else {

window.addEventListener('load', load, false)

}

</script>

基本绘画

在最基本的画图 *** 作中,你需要的只是希望图像出现处的位置(x和y坐标)。图像的位置是相对于其左上角来判断的。使用这种方法,图像可以简单的以其原尺寸被画在画布上。

drawImage(image, x, y)

var canvas = document.getElementById(‘myCanvas’)

var ctx = canvas.getContext(’2d’)ctx.drawImage(myImage, 50, 50)

ctx.drawImage(myImage, 125, 125)

ctx.drawImage(myImage, 210, 210)

缩放及调整尺寸

改变图像的尺寸,你需要使用重载的drawImage函数,提供给它希望的宽度和高度参数。

drawImage(image, x, y, width, height)

var canvas = document.getElementById(‘myCanvas’)

var ctx = canvas.getContext(’2d’)ctx.drawImage(myImage, 50, 50, 100, 100)

ctx.drawImage(myImage, 125, 125, 200, 50)

ctx.drawImage(myImage, 210, 210, 500, 500)

图像裁剪

最后一个drawImage方法的功用是对图像进行裁剪。

drawImage(image,

sourceX,

sourceY,

sourceWidth,

sourceHeight,

destX,

destY,

destWidth,

destHeight)

参数很多,但基本上你可以把它想成从原图中取出一个矩形区域,然后把它画到画布上目标区域里。

先上官方项目地址:html2canvas

第一步:html转为canvas

基于html2canvas.js可将一个元素渲染为canvas,只需要简单的调用html2canvas(element[, options])即可。下列html2canvas方法会返回一个包含有<canvas>元素的promise:

html2canvas(document.body).then(function(canvas) {  

     document.body.appendChild(canvas)

})

第二步:canvas转image

上一步生成的canvas即为包含目标元素的<canvas>元素对象。实现保存图片的目标只需要将canvas转image即可。

使用第三方库Canvas2Image.js,调用其convertToImage方法。Canvas2Image.js

下面是一个完整的例子:

convert2canvas() {

    var shareContent = YourTargetElem 

    var width = shareContent.offsetWidth 

    var height = shareContent.offsetHeight 

    var canvas = document.createElement("canvas") 

    var scale = 2 

    canvas.width = width * scale 

    canvas.height = height * scale 

    canvas.getContext("2d").scale(scale, scale) 

    var opts = {

        scale: scale, 

        canvas: canvas, 

        logging: true, 

        width: width, 

        height: height 

    }

    html2canvas(shareContent, opts).then(function (canvas) {

        var context = canvas.getContext('2d')

        var img = Canvas2Image.convertToImage(canvas, canvas.width, canvas.height)

        document.body.appendChild(img)

        $(img).css({

            "width": canvas.width / 2 + "px",

            "height": canvas.height / 2 + "px",

        })

    })

}

你的脚本是放在<script>标签中的吗?另外ctx=c.get.Context("2d")多了个点,应该是ctx=c.getContext("2d")

使用如下代码绘图没有问题:

<img id="A" src="A.jpg" alt="A" width="300" height="300" /><br />canvas画板<br /><canvas id="canvas_A" width="500" height="350" style="border:1px solid black">你的浏览器不支持html5</canvas><script>var c,ctx,imgc=document.getElementById("canvas_A")ctx=c.getContext("2d")img=document.getElementById("A")ctx.drawImage(img,10,10)</script>

这样可以么?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7127341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存