我想从现有的图像中采取不规则形状的部分,并使用HTML5画布将其呈现为Javascript中的新图像。因此,只有多边形边界内的数据才会被复制。我提出的方法包括:带有HTML5画布的putImageData的遮罩?

在新画布中绘制多边形。

创建使用getImageData(矩形)

应用数据到新的画布使用从原来的帆布clip

将数据复制使用putImageData

口罩它没有工作,整个矩形(例如来自边界外的来源的东西)仍然出现。 This question解释了原因: “规范说明putImageData不会受到剪辑区域的影响。”党!

我也尝试绘制形状,设置context.globalCompositeOperation = "source-in",然后使用putImageData。同样的结果:没有应用掩膜。我怀疑是出于类似的原因。

关于如何完成此目标的任何建议?以下是我正在进行的工作的基本代码,以防不清楚我正在尝试做什么。 (不要试图太难调试它,它会从使用很多不在这里的函数的代码中清理/提取,只是试图显示逻辑)。

// coords is the polygon data for the area I want

context = $('canvas')[0].getContext("2d");

context.save();

context.beginPath();

context.moveTo(coords[0], coords[1]);

for (i = 2; i < coords.length; i += 2) {

context.lineTo(coords[i], coords[i + 1]);

}

//context.closePath();

context.clip();

$img = $('#main_image');

copy_canvas = new_canvas($img); // just creates a new canvas matching dimensions of image

copy_ctx = copy.getContext("2d");

tempImage = new Image();

tempImage.src = $img.attr("src");

copy_ctx.drawImage(tempImage,0,0,tempImage.width,tempImage.height);

// returns array x,y,x,y with t/l and b/r corners for a polygon

corners = get_corners(coords)

var data = copy_ctx.getImageData(corners[0],corners[1],corners[2],corners[3]);

//context.globalCompositeOperation = "source-in";

context.putImageData(data,0,0);

context.restore();

HTML5如何添加图片遮罩,带有HTML5画布的putImageData的遮罩?相关推荐

  1. html5中的图片的location,HTML5中的History和Location对象

    今天发现原来HTML5对History和Location对象进行了改进,提供了几个新的API.我觉得,这用来结合Ajax来使用,弥补Ajax技术更新内容但不产生历史记录的问题,十分有用. 我很久之前就 ...

  2. html5中切换图片怎么做,HTML5编程实战之二:用动画的形式切换图片

    用动画的形式切换图片 varwidth, height;varcontext, image, functionId;vardrawLeft, drawWidth;vardrawTop, drawHei ...

  3. 使用jQuery开发一个基于HTML5的漂亮图片拖拽上传web应用

    昨天我们介绍了一款HTML5文件上传的jQuery插件:jQuery HTML5 uploader,今天我们将开发一个简单的叫upload center的图片上传程序,允许用户使用拖拽方式来上传电脑上 ...

  4. html图片自动在div里放大,HTML5+CSS3实现图片的放大/缩小

    原标题:HTML5+CSS3实现图片的放大/缩小 最近做项目时,经常遇到需要图片缓慢放大的效果.我做的时候想到了几种方法,所以来总结一下. 1. 利用css改变图片的宽高,做出视觉上的放大. 首先,将 ...

  5. HTML5 本地裁剪图片

    最近有时间了解了下html5的各API,发现新浪微博的头像设置是使用canvas实现截图的,加之前段时间了解了下html5的File API使用File API 之FileReader实现文件上传更加 ...

  6. HTML5 实现本地图片裁剪

    HTML5 实现本地图片裁剪 文章目录 HTML5 实现本地图片裁剪 1.知识点 1.HTML 结构与 CSS 样式 2.初始化 3 实现 handleFiles,获取文件,读取文件并生成 url 4 ...

  7. html5 css3替换图片,移动Web—CSS为Retina屏幕替换更高质量的图片

    特别声明:此篇文章根据Stéphanie Walter 的英文文章<The Mobile Web: CSS Image Replacement for Retina Display Device ...

  8. php将上传的图片转为base64,html5实现把上传的图片转成base64编码在显示(代码实例)...

    本章给大家介绍html5实现把上传的图片转成base64编码在显示(代码实例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 首先我们来详细的看一看base64编码: 什么是bas ...

  9. php识别html5,CSS_在IE6/7/8下识别html5标签(让老式浏览器识别html5),识别html5标签: html5添加了许 - phpStudy...

    在IE6/7/8下识别html5标签(让老式浏览器识别html5) 识别html5标签: html5添加了许多语义化的标签,比如,,什么的,当时看到这些标签的时候心想html5估计很多老式IE浏览器都 ...

最新文章

  1. java 千分位格式话_Java 字符串小数转成千分位格式
  2. QT的QDesignerCustomWidgetCollectionInterface类的使用
  3. Material Design控件使用学习 toolbar+drawerlayout+ Snackbar
  4. K8s 原理架构介绍(一)
  5. IIS 7中ISAPI筛选器配置
  6. 【Java方法】统计数组内不同元素个数及每个元素的数量
  7. python处理异常的方式_Python报错出现异常的介绍,及其处理方式
  8. 关于android studio报错Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.
  9. 第一天-虚拟机+CentOS6.7+工具软件安装
  10. 红米手机android无法开机画面,红米手机一直停在开机画面怎么办?
  11. 关于微信小程序授权登陆之后需要在个人信息页展示信息,如微信头像,昵称这件事
  12. 回味那些评论有时候也能受教--摘自双鱼座ROM之硬件评论
  13. 《算法笔记》10.5小节——图算法专题->最小生成树
  14. 微信小程序上传图片到阿里云oss方法
  15. 解决声卡爆音/杂音的四种方法
  16. @Before和@After的区别
  17. 【转载】数据挖掘中所需的概率论与数理统计知识
  18. 云计算介绍PPT2011-03版
  19. HTTPS SSL TLS
  20. 如何关闭OPPO手机服务器维护,使用OPPO手机,一定要关闭这3个功能,不然你的手机会越来越卡...

热门文章

  1. 源码学习之RunWith annotation used in JUnit debug
  2. Navigation execution entry point
  3. SAP ABAP Netweaver Authorization trace tool - SAP ABAP 权限跟踪监控工具
  4. Cloud for Customer系统里的附件url,可以通过partner编程自己生成么
  5. SAP CRM呼叫中心异步搜索功能的实现
  6. 利用matlab提取水印,怎么在含有水印的图像中提取出水印
  7. java的四种引用类型_你知道Java的四种引用类型吗?
  8. Java入门算法(树篇)
  9. 2020下半年python二级考试时间_2020年下半年计算机等级考试报名通知
  10. 电脑上怎么做pdf文件_PDF压缩文件怎么压缩最小?请收好这些PDF压缩方法