Canvas中 drawImage绘制图片不显示

在学习 html5中的 Canvas.drawImage时写了如下代码:

<!doctype html>
<html>
    <head><title>研究</title></head>
    <body>
        <canvas id="canvas" style="width:500px;height:400px; border:1px solid red"></canvas>
        <img id="img" src="ggg.jpg"  hidden />
    </body>
    <Script type="text/javascript">
        var cxt = document.getElementById("canvas").getContext("2d");
        var imgElement = document.getElementById("img");
       cxt.drawImage(imgElement, 10, 10, 200, 200);
    </Script>
</html>

在charome和firefox中都无法显示绘制的图片效果。后来查询了很多资料,才知道canvas在绘制图片的时候要等到img的图片完全加载到客户端后才可以绘制正确,现在的代码中直接是绘制图片,图片还没加载完就开始在绘制图片了,把代码稍微改下:

  

<!doctype html>
<html>
    <head><title>研究</title></head>
    <body>
        <canvas id="canvas" style="width:500px;height:400px; border:1px solid red"></canvas>
        <img id="img" src="ggg.jpg"  hidden />
    </body>
    <Script type="text/javascript">
        var cxt = document.getElementById("canvas").getContext("2d");
        var imgElement = document.getElementById("img");
       setTimeout(function () { cxt.drawImage(imgElement, 10, 10, 200, 200); },0);
    </Script>
</html>

  或者

<!doctype html>
<html>
    <head><title>研究</title></head>
    <body>
        <canvas id="canvas" style="width:500px;height:400px; border:1px solid red"></canvas>
        <img id="img" src="ggg.jpg"  hidden />
    </body>
    <Script type="text/javascript">
        var cxt = document.getElementById("canvas").getContext("2d");
        var imgElement = document.getElementById("img");
        imgElement.onload = function () { cxt.drawImage(imgElement, 10, 10, 200, 200); };
    </Script>
</html>

  就可以正常显示绘制的图片了。

时间: 2024-10-10 10:04:35

Canvas中 drawImage绘制图片不显示的相关文章

Canvas 中drawImage 绘制不出图片

在使用Canvas的drawImage绘制图片时,却发现绘制不出图片,原因是图片是异步加载,图片加载完再绘制. //html <img src="1.png" /> <canvas id="draw"></canvas> //js var Image = document.images[0]; var draw = document.getElementById('draw'); var context = draw.getCon

android中Canvas使用drawBitmap绘制图片

1.主要的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float top, Paint paint) 2.对图片剪接和限定显示区域 drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint): Rect src: 是对图片进行裁截,若是空null则显示整个图片 RectF dst:是图片在Canvas画布中显示的

使用canvas 的api 实现 图片的显示 及 压缩

在移动端压缩图片并且上传主要用到filereader.canvas 以及 formdata 这三个h5的api.逻辑并不难.整个过程就是: (1)用户使用input file上传图片的时候,用filereader读取用户上传的图片数据(base64格式) (2)把图片数据传入img对象,然后将img绘制到canvas上,再调用canvas.toDataURL对图片进行压缩 (3)获取到压缩后的base64格式图片数据,转成二进制塞入formdata,再通过XmlHttpRequest提交form

Android中ImnageView 中如何让图片拉伸显示?

通过设置android:scaleType="fitXY"使得图片拉伸显示.补充:scaleType的属性有matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fitXY.android:scaleType="center"保持原图的大小,显示在ImageView的中心.当原图的size大于ImageView的size,超过部分裁剪处理. android:scaleType=&quo

[ html drawImage 绘制图片 ] canvas绘制图片 drawImage 属性实例演示之二

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

[ html drawImage 绘制图片 ] canvas绘制图片 drawImage 属性实例演示

<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta name='description' content='this is my page'> <meta name='keywords' content='keyword1,keyword2,keyword3'> <meta http-equiv="

context.drawImage绘制图片

context.drawImage(img,x,y)  x,y图像起始坐标 context.drawImage(img,x,y,w,h) w,h指定图像的宽度和高度 context.drawImage(img,sx,sy,sw,sh,dx,dy,dw,dh) s被复制区域  d复制后 理解了其实挺简单的!就是不知道用用到多少? <!DOCTYPE html><html> <head> <meta charset="utf-8"> <

qt中窗口绘制——图片的绘制

在qt 中,QPixmap 用于表示一张图片,支持png,jpg格式的加载. QPixmap pm("c:/test.png"); 或者 QPixmap pm; pm.load("c:/test/png"); QT中图片的路径分为两种: (1)文件系统中的图片:使用绝对路径或者相对路径. (2)资源中的文件:以冒号开头例如:/Test/source/logo.jpg 绘制的参数: (1)源矩形 可以绘制图形的全部,也可以绘制其中的一部分. QRect source(

CSS中background:url(图片) 不能显示的问题

刚刚碰到一个奇怪的问题,这样一段CSS代码: 1 .pho6 { background: url(img/pho6.jpg);  } 这段代码居然不能显示出背景图片,路经绝对是没错的代码肯定没有问题,俄,百度了好久终于让我给找到了真正的问题在哪? 在url(imagepath)里的这个imagepath(图片路径).原来它是相对于.css文件所在的文件夹,也就是调用css文件夹下的子文件夹来获取路径地址, 通过浏览器调试,可以看到浏览器获取路径是从css下面的img来找我的图片的,但是 我的im