1、  使用canvas绘制图像

什么是图像?在js中它就是一个<img src=””>,<img>有两种接收图像信息的方法,一个是直接链接到图像地址,一个使用base64数据,不过这里讨论的是canvas要使用的Image对象。我们有两个方式定义:

<1>在html中定义好,然后根据id获取

var img=document.getElementById("scream");

<2>新建image对象

var img = new Image();

img.onload = function(){//在这里面进行对图像对象的操作

  ctx.drawImage(img,0,0);         

};

img.src = 'img/6.png';

得到img对象后,我们有三种方式在canvas上绘制你想要的图像。

<1>只定义开始绘制的坐标,图像的宽和高取决于原图像文件的大小

   ctx.drawImage(img,10,10);//***第一种,三个参数分别是Image,绘制开始的x,y

<2>定义开始的坐标,和绘制的宽和高

ctx.drawImage(img,100,100,width,height);//***第二种,三个参数分别是Image,绘制开始的x,y和拉伸的宽度高度

<3>切割原图片,并绘制到canvas的制定位置

  ctx.drawImage(img,sx,sy,sw,sh,200,80,sw,sh);//***第三种,三个参数分别是Image,切割原图的开始坐标和宽高,绘制开始的x,y和拉伸的宽度高度

附完整的代码:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8"/>
<script src='js/jquery-3.3.1.min.js'></script>
<style>
body{
background:black;
text-align:center;
}
#myCanvas{
background:white;
}
#contain{
width:100%;
height:600px;
}
#scream{
width:100%;
} </style>
</head>
<body>
<img src="img/7.png" id="scream" hidden>
<div id="contain">
<canvas id="myCanvas"></canvas>
</div>
<script type="text/javascript">
$(document).ready(function(){
var contain = document.getElementById('contain');
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
c.width=contain.offsetWidth;
c.height=contain.offsetHeight;//***根据容器大小设置宽和高
/*从dom元素中获取图像*/
var img=document.getElementById("scream"); ctx.drawImage(img,10,10);//***第一种,三个参数分别是Image,绘制开始的x,y
var width = img.width;
/*新建一个图像元素*/
var img = new Image();
img.onload = function(){
var sw = img.width;
var sh = img.height;
var height = width*sh*1.0/sw;
ctx.drawImage(img,100,100,width,height);//***第二种,三个参数分别是Image,绘制开始的x,y和拉伸的宽度高度
var sx = sw-width;
var sy = sh-height; ctx.drawImage(img,sx,sy,sw,sh,200,80,sw,sh);//***第三种,三个参数分别是Image,切割原图的开始坐标和宽高,绘制开始的x,y和拉伸的宽度高度
/*后面设置的是原图的宽和高,并不是切割出来的部分的宽和高,需要转换*/
};
img.src = 'img/6.png';//*这个图像请比第一个大一点,最好大很多 });
</script>
</body>
</html>

canvas绘制图像

参考:

Js中获取各种宽度高度的问题:

https://www.cnblogs.com/wangkongming/p/6195903.html

最新文章

  1. 有关docker的学习链接
  2. 2Sigma OA prepare: Longest Chain
  3. xmind的第七天笔记
  4. Creating, Stopping, Re-Starting and Deleting a Timer in Oracle Forms
  5. linq里面似in的查询
  6. UI 公钥加密
  7. 架设自己的FTP服务器 Serv-U详细配置图文教程
  8. error: Failed dependencies:解决
  9. JAVA核心技术I---JAVA基础知识(知识回顾)
  10. css3 Box model 与 Box-sizing
  11. 转:Http下载文件类 支技断点续传功能
  12. 处理html内容,获取纯文本
  13. gitblit.cmd运行自动关闭
  14. Redis介绍及安装
  15. DrawDibDraw__ZC测试
  16. 移动端 输入框 如果类型是number,用户也可以输入汉字和字母
  17. Yandex插件使用说明——Slager_Z
  18. 简单侧边栏js效果
  19. 实际应用中的C#加密
  20. 【四边形不等式】noi95- 合并石子

热门文章

  1. Coderfroces 864 D. Make a Permutation!
  2. 36Kr众筹项目比呀比biyabi,调查分析研究报告,背后资方势力的关系梳理
  3. react-native-swiper苹果正常显示,Android不显示
  4. Netty In Action中文版 - 第七章:编解码器Codec
  5. .Net接口调试与案例
  6. js插件---video.js如何使用
  7. 跨域使用onmessage实现方式
  8. Oracle 启动失败报错“TNS-12555: TNS:permission denied”解决办法
  9. POJ——T 2752 Seek the Name, Seek the Fame
  10. apache 使用 mod_fcgid.so模块时 配置指令