canvas、drawImage的问题,高手速进
代码如下:
<!DOCTYPE html>
<html dir="ltr" lang="en-US">
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(function ($) {
$("img").load(function () {
var w = $(this).width(),
h = $(this).height();
$(this).after($("<canvas>").css({"width": w, "height": h, "backgroundColor": "blue"}));
var ctx = $(this).next("canvas")[0].getContext("2d");
ctx.drawImage($(this)[0], 0, 0, w, h);
});
});
</script>
</head>
<body>
<img src="http://a.hiphotos.baidu.com/album/s%3D1600%3Bq%3D90/sign=28b8cc8cbc315c6047956fe9bd81f062/1e30e924b899a901844e3baf1d950a7b0208f534.jpg"/>
</body>
</html>
drawImage出来的图片尺寸变形,不是原来图片的形状,会看到canvas背景蓝色。
------解决方案--------------------请问你用的是什么浏览器呀???我用的chrome opera ie9貌似都没有你说的问题
------解决方案--------------------.after($("<canvas width="+w+" height="+height+" >")
canvas的实际宽高(canvas代码种实际参考的大小) 要这样设置 否则默认是 300-150
样式里面的 宽高 代表 渲染大小
实际宽高 和 样式 宽高 不一致 就会拉伸了
------解决方案--------------------canvas里面的width和height跟css里面的width和height是不一样的,我以前就被坑过。。 统一用canvas.width比较好,画板的坐标神马的跟这个width是一样的,跟css里面的不一样
------解决方案--------------------