1.图像放大缩小

 <script>
var cvs = document.getElementById("canvas");
cvs.width =
cvs.height = ;
var context = cvs.getContext("2d");
var range = document.getElementById("range");
var img = new Image();
window.onload = function () {
img.src = "imgs/back.jpg";
img.onload = function () {
drawImg();
}
}
function drawImg(scale) {
context.clearRect(, , cvs.width, cvs.height);
var w = scale * img.width;
var h = scale * img.height;
var dx = cvs.width / - w / ;
var dy = cvs.height / - h / ;
context.drawImage(img, dx, dy, w, h);
}
range.onmousemove = function () {
var v = this.value;
drawImg(v);
}
</script>
 <canvas id="canvas"></canvas>

    <input id="range" type="range" min="0.5" max="3.0" value="1.0" style="width:600px;" step="0.1" />

上面是通过滑动来放大缩小图像的,在canvas上使用 dragImage(),可以把一张图像绘制到画布上。

drawImage不仅能加载图片,还能加载canvas:

2.对图像加水印

可以在一个画布上加载另一个画布的方法来对图片加水印

<canvas id="canvas"></canvas>
<input id="range" type="range" min="0.5" max="3.0" value="1.0" style="width:600px;" step="0.1" />
<canvas id="canvas1" style="display:none"></canvas>
 <script>
var cvs = document.getElementById("canvas");
cvs.width =
cvs.height = ;
var context = cvs.getContext("2d");
var range = document.getElementById("range"); var cvs1 = document.getElementById("canvas1");
cvs1.width = ;
cvs1.height = ; context1 = cvs1.getContext("2d");
var img = new Image();
window.onload = function () {
img.src = "images/1-1.jpg";
img.onload = function () {
drawImg();
} context1.font = "bold 50px Arial";
context1.fillStyle = "rgba(255,255,255,0.5)";
context1.textBaseline = "middle";
context1.fillText("==www.sina.mtn==", , ); }
function drawImg(scale) {
context.clearRect(, , cvs.width, cvs.height);
var w = scale * img.width;
var h = scale * img.height;
var dx = cvs.width / - w / ;
var dy = cvs.height / - h / ;
context.drawImage(img, dx, dy, w, h);
context.drawImage(canvas1, cvs.width - cvs1.width, cvs.height - cvs1.height);
}
range.onmousemove = function () {
var v = this.value;
drawImg(v);
}
</script>

3.图片复制:从画布A得到画布图像,放到画布B上

  var dirImg= ctxA.getImageData(0, 0, cvsA.width, cvsA.height);

  ctxB.putImageData(dirImg, 0, 0);

putImageData还有四个参数,可以参考下图:

html5 canvas 图像处理的更多相关文章

  1. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  2. HTML5图形图像处理技术研究

    摘要:图形图像处理平台大部分是传统的C/S架构的桌面应用程序,维护困难,共享性差,而B/S架构的Web程序具有易维护.易共享的优点.本文研究了基于HTML5的Web图形图像处理技术,用HTML5实现了 ...

  3. html5 Canvas API

    详细内容请点击 1.HTML Canvas API有两方面优势可以弥补:首先,不需要将所绘制图像中的每个图元当做对象存储,因此执行性能非常好:其次,在其他编程语言现有的优秀二维绘图API的基础上实现C ...

  4. 赠书:HTML5 Canvas 2d 编程必读的两本经典

    赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...

  5. 如何开发一个简单的HTML5 Canvas 小游戏

    原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...

  6. html5 canvas常用api总结(一)

    1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...

  7. HTML5 Canvas绘制转盘抽奖

    新项目:完整的Canvas转盘抽奖代码 https://github.com/givebest/GB-canvas-turntable 演示 http://blog.givebest.cn/GB-ca ...

  8. html5 canvas首屏自适应背景动画循环效果代码

    模板描述:html5 canvas首屏自适应背景动画循环效果代码 由于动态图太大,怕以后服务器受不了,所以现在都改为静态图了,大家点击演示地址一样的,希望大家喜欢,你们的支持就是小海的动力!! 欢迎大 ...

  9. 自己写的HTML5 Canvas + Javascript五子棋

    看到一些曾经只会灌水的网友,在学习了前端之后,已经能写出下载量几千几万的脚本.样式,帮助大众,成为受欢迎的人,感觉满羡慕的.我也想学会前端技术,变得受欢迎呀.于是心血来潮,开始学习前端知识,并写下了这 ...

随机推荐

  1. jquery.validate验证,jquery.Form插件提交,主要可以异步提交文件

    <script type="text/javascript"> $(function () { $form = $("#manuForm"); $b ...

  2. 成都Uber优步司机奖励政策(3月11日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. Please ensure JDK installation is valid and compatible with the current OS

    报错如下: Gradle sync failed: Could not run JVM from the selected JDK. Please ensure JDK installation is ...

  4. 利尔达CC3200模块第一篇之-wlan_ap例程测试

    1. 本次采用利尔达的CC3200模块,CC3200主时钟80M,内部没有flash,必须外接SPI Flash.本次测试采用利尔达科技的CC3200的底板和模块(左边).烧写连接VCC, GND, ...

  5. C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它

    C# 委托 / 跨线程访问UI /  线程间操作无效: 从不是创建控件“Form1”的线程访问它 网上的代码都比较复杂,还是这个简单 见代码, 简易解决办法: 主窗体代码 using System; ...

  6. Odd CSS syntax. [class^='icon-'], [class*=' icon-']

    原文: https://stackoverflow.com/questions/20322740/odd-css-syntax-class-icon-class-icon I am going thr ...

  7. Qt 解析EXcel文件

    写代码需要将excel中的文件导入到数据库中 网上找到以为大神写的,但是当初没有保存,也没有找到 我几乎是原分不动拔下来的,希望大神莫怪 void AddDialog::readExcel(QStri ...

  8. 手机APP测试如何进行兼容性测试?

    Android App兼容性测试是一个比较重要的App评价内容,实际上兼容性测试不仅仅和测试人员相关,在开发阶段就应当着重考虑,因为兼容性问题是除了实现App本身要求的功能后,必须要关注.而且至关重要 ...

  9. Python3安装pywin32模块

    假如你安装的是Python3.6, 那么可以直接用PyCharm或者pip安装pywin32模块: 但是, 由于我安装的是Python3.7, 所以PyCharm或者pip都无法成功安装pywin32 ...

  10. Fiddler - 拦截手机请求

    1. 在电脑上安装Fillder. 安装好之后的Fiddler 打开是这样的: 2. 浏览器访问http://127.0.0.1:8888/fiddler,下载证书并安装 3. 打开抓取https请求 ...