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

有关Canvas的一点小事—图像绘制的更多相关文章

  1. 有关Canvas的一点小事--鼠标绘图

    1.  如何根据鼠标位置获取canvas上对应位置的x,y. 2.  canvas的图糊了,设置宽和高的方式不对. 3.鼠标绘图代码 之前听说过canvas这个元素,但是实际上并没有深入了解过.不过日 ...

  2. 有关Canvas的一点小事—canvas和resize

     之前就说了canvas设置大小的时候用的就是设置实打实的像素值,像图像一样设置百分比然后根据浏览器大小自己适应大小是不可能的——当然一般也不会想要cavans改变大小.不过项目之前有用到过,既然去了 ...

  3. 有关Canvas的一点小事—canvas数据和像素点

    1.  canvas生成base64数据 canvas.toDataURL()生成的数据可以直接给image对象使用作为<img>显示在前端,也可以传给后台生成图片保存.前端生成保存图片的 ...

  4. HTML5 canvas图像绘制方法与像素操作属性和方法

    图像绘制方法 drawImage()        向画布上绘制图像.画布或视频 像素操作属性和方法 width                                返回 ImageData ...

  5. HTML5 -canvas拖拽、移动 绘制图片可操作移动,拖动

    关于canvas 的基础知识就不多说了,可以进这个网址学习 http://www.w3school.com.cn/html5/html_5_canvas.asp 对于canvas 和 SVG 其实一开 ...

  6. IOS第16天(1,Quartz2D基本图像绘制)

    ***************基本图像绘制 画线 #import "HMLineView.h" @implementation HMLineView - (id)initWithF ...

  7. canvas学习总结三:绘制路径-线段

    Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的. 立即绘制图形方法仅有两个strokeRect(),fillRect(),虽然strokezText(),fillText() ...

  8. canvas学习总结六:绘制矩形

    在第三章中(canvas学习总结三:绘制路径-线段)我们提高Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的. 立即绘制图形方法仅有两个strokeRect(),fillRec ...

  9. iOS:quartz2D绘图(处理图像,绘制图像并添加水印)

    绘制图像既可以重写drawRect:方法并在该方法中绘制,也可以不用重写该方法,它有封装好的函数获取自己的图像绘制上下文,即UIGraphicsBeginImageContext(CGSize siz ...

随机推荐

  1. javaScript [[scope]]学习笔记

    在javaScript 学习中,闭包肯定是一个让人头疼的问题,而闭包必定离不开[[scope]]作用域 scope存储了执行期上下文的集合 而了解scope以及scope链又是一个十分抽象的问题 我们 ...

  2. Linux运维管理的必备工具

    一.统一账号管理 1.LDAP 统一管理各种平台帐号和密码,包括但不限于各种操作系统(Windows.Linux),Linux系统sudo集成,系统用户分组,主机登入限制等:可与Apache,HTTP ...

  3. Codeforces 429D Tricky Function 近期点对

    题目链接:点击打开链接 暴力出奇迹. 正解应该是近期点对.以i点为x轴,sum[i](前缀和)为y轴,求随意两点间的距离. 先来个科学的暴力代码: #include<stdio.h> #i ...

  4. BRep Shapes Based on Tessellated Geometry

    BRep Shapes Based on Tessellated Geometry eryar@163.com Key Words. BRep Shape, Tessellated Geometry, ...

  5. Activity中recreate方法的应用

    參考两篇文章:http://blog.csdn.net/watermusicyes/article/details/47392949     http://blog.csdn.net/droyon/a ...

  6. eclispe中如何创建web项目

    xian 1.从file中点击---->new----->other---->javaEE----->web---->Dynamic  Web project----&g ...

  7. PopupMenu-使用实例跟监听事件

    今天需要给一个控件添加弹出菜单功能.就顺便学习了下popupMenu的使用,记录下来. 它的使用其实也非常的简单,看如下代码 popupMenu = new PopupMenu(MainActivit ...

  8. 通过Debug-->Attach to Process的方式来调试网站

    找到网站所对应的应用程序池

  9. android图像处理系列之三-- 图片色调饱和度、色相、亮度处理

    原图: 处理后: 下面贴代码: 一.图片处理层: package com.jacp.tone.view; import java.util.ArrayList; import android.cont ...

  10. hdp spark beeline

    thriftserver端口号10016 hdp所用端口号由10000改为10016 !connect jdbc:hive2://localhost:10016