HTML Canvas 剪辑和 putImageData

2023-12-08

我有一个画布,背景中有一个大图像,前面有一个较小的圆形图像。我通过像这样使用剪辑实现了这种圆形图像效果

ctx.save();

ctx.beginPath();
ctx.arc(x,y,r,0,Math.PI*2, true);   
ctx.closePath();
ctx.clip();

ctx.drawImage(img,x-r,y-r,2*r,2*r);     // draw the image
ctx.restore();

然后我想旋转圆形图像,所以我使用第二个上下文并像这样旋转和重绘

backCanvas=document.createElement('canvas');    
backContext=backCanvas.getContext('2d');
backCanvas.width=w;
backCanvas.height=h;

backContext.translate(w/2,h/2);
backContext.rotate(a);

backContext.drawImage(img,-w/2,-h/2,w,h);

var imgData=backContext.getImageData(0,0,w,h);

ctx.save();

ctx.beginPath();
ctx.arc(x,y,r,0,Math.PI*2, true);   
ctx.closePath();
ctx.clip();
ctx.putImageData(imgData,x,y);

ctx.restore();

但发生的情况是,黑色透明背景是从背面画布复制的,并且剪辑无法“剪辑”它。

任何帮助,将不胜感激


根据specs,

当前路径、变换矩阵、阴影属性、全局alpha、剪裁区域,以及全局组合运算符must not影响 getImageData() 和 putImageData() 方法。

就您而言,为什么要使用额外的画布和像素数据操作?为什么不只是

ctx.save();

ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI*2, true);   
ctx.closePath();
ctx.clip();

ctx.translate(x, y);
ctx.drawImage(img, -r, -r, 2*r, 2*r);
// not restoring context here, saving the clipping region and translation matrix

// ... here goes the second part, wherever it is:
ctx.save();
ctx.rotate(a);
ctx.drawImage(img, -r, -r, 2*r, 2*r);
ctx.restore();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML Canvas 剪辑和 putImageData 的相关文章

  • 在网络上使用多种颜色的背景

    抱歉 如果标题有点误导 我想做的是用真正的浅灰色覆盖索引页面的背景 除了显示我的内容的部分 div class col sm 1 div div class col sm 8 div div class col sm 3 div 我希望 c
  • eBay API 调用不适用于 UPC/EAN

    eBay 的 API findItemsByProduct 操作适用于 UPC 和 EAN 但不幸的是它不起作用 例如 下面的 HTTP GET 请求会抛出 无效的产品 ID 值 错误41 Note 请将 SECURITY APPNAME
  • .onLoad 在渲染完成之前调用吗?

    我想在页面加载后调用一些 JS 这可能会涉及延迟 因此我希望首先加载页面 以便显示内容 但似乎调用了 onLoad 处理程序中的代码before渲染完成 是否有更好的事件可以使用 该事件在页面 完成 时触发 澄清一下 我想在页面呈现在屏幕上
  • FloorPlanner 应用程序的 SVG/Canvas 与 Flash

    我计划创建一个平面图应用程序 允许用户使用鼠标绘制 调整大小 移动和旋转对象 我只是想知道使用 Flash 或 Javascript 是否会更好 如果使用 Javascript 我应该使用 canvas 还是 SVG 该应用程序将允许拖动选
  • 在 jQuery 中,如果我有一个开始类和结束类,我如何用 div 包装多个元素

    好的 这里有一些 html 我有一些开始和结束课程 但为此我只添加了每门课程 1 门 div span nbsp span div div span nbsp span div div class start lt start span n
  • 单击或悬停在菜单区域之外时关闭反应按钮下拉菜单

    在我的反应应用程序中 其中一个组件正在创建一个按钮下拉菜单 如下所示 div class dropdown div
  • innerHTML 未写入 svg 组 Firefox 和 IE

    我正在做一个项目 遇到了障碍 在 Chrome 中 它按预期工作 但在 Firefox 和 IE 中则不然 下面的代码实际上只是真实项目代码的非常简化的版本 基本上我正在尝试替换 svg 的每组中的圆圈 因此 我从预编码的圆圈开始 然后删除
  • 使用 div 标签定位元素

    div class HeaderLink div class HeadPanelElement a href Blog a div div
  • 如何将html表单中的信息写入MySQL数据库

    好吧 我正在建立一个带有表单的网站 我想将用户在表单中输入的所有信息保存到我的 MySQL 数据库中 表单的编码如下
  • 如何在 Bootstrap v4 中实现导航栏下拉悬停?

    我对新的 bootstrap 版本有点困惑 因为他们将下拉菜单更改为 div
  • 角度 ui-grid 自定义标题 html

    我正在尝试将 glyphicon glyphicon thlist 我可以单击并调用控制器函数 添加到默认标题的左侧 我采用了默认标头并尝试操纵它来执行此操作 默认标头位于 https raw githubusercontent com a
  • 控制 HTML 中的图像加载顺序

    有没有办法控制网页上图像的加载顺序 我正在考虑尝试通过首先加载轻量级 加载 图形来模拟预加载器 有任何想法吗 Thanks 使用 Javascript 并填充图像src属性稍后 这 告诉浏览器链接到页面上的 URL 因此不会向服务器发送请求
  • HTML DOM 宽度 + 可见窗口高度

    如何获取浏览器打开时可用空间的当前高度和宽度 我不需要整个文档的高度 只需要屏幕上可见的高度 你可以看看这个博客文章 http www howtocreate co uk tutorials javascript browserwindow
  • rvest - 在 1 个标签中抓取 2 个类

    我是新来的 如何提取标签中具有 2 个类名或仅 1 个类名的元素 这是我的代码和问题 doc lt paste span class a1 b1 text1 span span class b1 text2 span library rve
  • div 元素中的文本在 Firefox 中位于水平对齐的 span 元素之上

    我正在编写一个 Web 应用程序 其中支持票证显示为左侧的票证 ID 作为静态文本 其余字段 描述 严重性 持续时间 状态 报告者 在右侧显示为固定文本中的滚动文本 大小视口 我从一个 span 包含票证 ID 和视口 div 包含第二个
  • 图像映射区域周围不需要的边框

    我正在使用带有圆形区域的图像贴图 问题是我在 IE7 中的区域周围出现了不需要的边框 此边框不会出现在 FF 和 Chrome 中 也不会出现在 IE8 IE9 中 我尝试向图像添加 border 0 锚点的 css 属性 即 a bord
  • 如何使用 JQuery 提取嵌套 HTML 中的文本?

    我这里有 HTML 代码 div class actResult style border solid table tbody tr td Order Number td td 1 td tr tr td Customer Number t
  • 辅助功能:在密码输入中显示/隐藏密码按钮

    密码输入具有显示 隐藏按钮是很常见的 但我在网上发现很少有关于与其相关的可访问性问题的内容 我是否应该将任何类型的 ARIA 属性附加到按钮或密码输入 是一个复选框还是一个触发JS的按钮也能达到很好的效果 不知道我应该注意什么 作为一个不太
  • 单击按钮滚动到特定 div

    我有一个具有固定菜单和内容框 div 的页面 单击菜单时 内容框滚动到特定 div 到目前为止 一切都很好 这是这里的示例 https jsfiddle net ezrinn 8cdjsmb9 11 https jsfiddle net e
  • AngularJs:当放置在 ng-view 标签内时,ng-include 不起作用

    我正在通过 ng view 内的角度路线加载 html 页面 我正在加载的页面包含一个 ng include 标签 指向 另一个 html 文件 我尝试了以下所有语法 div src div div div div src include

随机推荐

  • QQuickWidget抓取图像

    我正在保存一个图像QQuickWidget有几个 QML 孩子 但我只有一张空白图像 C 方面 QQuickWidget content content gt setSource QUrl qml main qml QPixmap pm c
  • Sequential Guid 主键列应该是聚集索引吗?

    使用顺序 guid 的目标是 您可以使用聚集索引 而不会产生高级别碎片 如果它是常规 guid 那么聚集索引中通常会存在这种情况 对吗 首先澄清一下 主键和聚集索引是两个独立且不同的东西 即一个不与另一个耦合 PK 可以是非聚集的 聚集索引
  • 在g++编译器中使用strlen获取数组的长度

    有人可以解释为什么当我使用以下 g 编译器编译源代码时出现此错误 include
  • 降低 OpenCV 中的图像分辨率

    我正在使用 OpenCV 从 A4Tech 相机捕获图像 当我尝试降低图像分辨率时 图像断言失败 CvCapture camera cvCreateCameraCapture 1 0 is index of Laptop integrate
  • PHP:格式化时间 Stackoverflow 或 Apple Mail 风格

    有这个php net 文档中的非常好的功能使您能够以 Facebook 风格的方式格式化时间 例如 2 minutes ago 4 weeks ago or 3 years ago 不过 我更喜欢 Stackoverflow 和 Apple
  • Python 深度压缩

    我正在尝试编写一个像 zip 这样的函数 我不擅长解释我的意思 所以我只会显示我正在尝试做的事情的 代码 a 1 2 3 4 5 b a zip a b 1 1 2 2 3 3 4 5 4 5 myzip a b 1 1 2 2 3 3 4
  • Django 使用 postgres 进行测试 - 重置序列

    到目前为止 开发和测试已经在 SQLite 上完成 而生产则在 Postgres 上完成 现在一切都需要在 Postgres 上运行 并且大量测试失败了 原因是 每个测试的 ID 不是以 1 开头 而是在测试之间继续 解决此问题的一种方法是
  • Powershell:根据创建日期将文件移动到文件夹

    我不是编码员 但我仍然尝试调整此处找到的 PS 脚本 但仍然无法获得我想要的行为 对我来说最困难的部分是 2 位数的日要求 dd 经过几次菜鸟尝试后 我需要一些帮助 我有一个包含数百张 JPG 的文件夹 我根据拍摄日期手动将这些 JPG 分
  • 获取 jQuery 和/或 DOM 对象的 HTML 字符串

    我想我已经读完了全文jQuery API 文档并在调试器中查看 jQuery 对象和简单的 DOM 元素 以检查它们在运行时实际拥有的方法 但对于我来说 我找不到一种方法来获取表示 jQuery 对象内容的 html 字符串或一个 DOM
  • Java - 滚动到 JTextArea 内的特定文本

    我正在尝试在我正在编写的当前程序中实现一个功能 并且我想学习如何向下滚动到 JTextArea 中的特定文本 例如 假设我有以下内容 JTextArea area new JTextArea someReallyLongString som
  • 如何按升序打印奇数? [复制]

    这个问题在这里已经有答案了 我需要按升序打印一系列奇数 我只能按降序解决它 num int input print Type any integer count 1 while count lt num num 1 if num 2 0 p
  • 通过异步 JavaScript (Mocha) 进行循环测试

    我正在尝试使用 Mocha 测试异步 JavaScript 但在循环异步填充数组时遇到一些问题 我的目标是创建 N arr length 测试 数组的每个元素一个 可能我缺少一些关于摩卡语义的东西 到目前为止 这是我的 非工作的 简化代码
  • 如何从 wxPython 中的 wx.TextCtrl 控件获取滚动位置/范围

    我有一个小型日志记录应用程序 用 wxPython 编写 它从我们正在开发的一些套件接收数据 并且我想在滚动窗口中显示文本 就目前情况而言 我使用 wx TextCtrl 进行文本显示 但滚动行为存在一些问题 基本上 我希望如果滚动条位于窗
  • BinaryReader ReadString指定长度?

    我正在开发一个解析器来接收 UDP 信息 解析它并存储它 为此 我正在使用BinaryReader因为它主要是二进制信息 但其中一些将是字符串 MSDN 说为了ReadString 功能 从当前流中读取字符串 该字符串的前缀为 长度 一次编
  • Android:从java脚本到java的回调函数

    我创建了一个应用程序 在其中使用 webview 并加载一个简单的静态 html 页面 我正在从活动调用 java 脚本函数 但无法从 java 脚本调用函数 我尝试了一些链接 但没有成功 Javascript回调函数传递给Android
  • 在 Quartz.Net 中为 BiWeekly 作业配置 CronString

    如何为以下作业配置 Quartz Net 作业调度程序的 CronString 作业应在周一中午 12 00 在 BiWeekly 上运行 即它应该在每个星期一运行 但中间会跳过一周 例子 1st Run gt 19 Nov 2012 Mo
  • 执行 JSF 导航时,不会调用映射到转发调度程序的过滤器

    我正在尝试使用 Tomcat 7 编写一个带有登录系统的简单 JSF Web 应用程序 我有两个页面 index xhtml 和 restricted welcome xhtml restricted 下面的页面只能由登录的用户访问 直接浏
  • JAVA:是否可以在循环外使用已在循环内初始化的变量?

    我是一名新程序员 试图通过制作游戏来练习 我希望玩家能够设置自己的名字 并回答 是 或 否 这个名字是否正确 我通过使用 while 循环来做到这一点 但是 由于该名称是在循环内部初始化的 因此我无法在外部使用它 我想知道是否有办法这样做
  • 如何针对不连续的元素中断 XSLT for-each 循环?

    我有一个具有以下结构的结构化 XML
  • HTML Canvas 剪辑和 putImageData

    我有一个画布 背景中有一个大图像 前面有一个较小的圆形图像 我通过像这样使用剪辑实现了这种圆形图像效果 ctx save ctx beginPath ctx arc x y r 0 Math PI 2 true ctx closePath