如何在Chrome浏览器中使用HTML5画布绘制图像阴影

2024-07-03

我们可以在 HTML5 中通过 g.shadowBlur 方法绘制阴影,在大多数浏览器中都可以,除了 Chrome,当我绘制透明图像阴影时,如下所示,我该如何解决这个问题

我的 Chrome 版本是“Chrome for Mac OS X,版本 27.0.1453.116”

<!DOCTYPE html>
<html>
<head>
    <title>Chrome HTML5 Canvas DrawImage Shadow Bug</title>
    <script type="text/javascript">
    function drawImage(evt){
        var image = evt.target;
        var w = image.width;
        var h = image.height;

        var canvas = document.getElementById('canvas');
        var g = canvas.getContext('2d');
        g.shadowColor = "#000000";
        g.shadowBlur = 10;
        g.shadowOffsetX = 0;
        g.shadowOffsetY = 0;
        g.drawImage(image, 20, 20);
        g.fillText("Text shadow in canvas", 10, 20)
    }
    </script>
</head>
<body>
<img src="http://www.google.com/images/icons/product/chrome-48.png" onload="drawImage(event)" style="-webkit-filter: drop-shadow(0px 0px 10px #222);" />
<div>
    <canvas id='canvas' style="background-color: #DDDDDD" />
</div>
</body>
</html>

@Gustavo Carvalho 在对该问题的评论中提到了在 Chrom 上绘制 img 的解决方案。我认为它应该在这里用作答案,而不是注释,即在临时画布中绘制图像,然后在临时画布上绘制阴影。这样你就会得到位图 img 的阴影:

function drawImageWithShadow(img) {
  var ctx = document.getElementById('mainCanvas').getContext('2d');
  var tmpCanvas = document.createElement('canvas');
  var tmpCtx = tmpCanvas.getContext('2d');


  tmpCtx.drawImage(img, 0, 0);


  ctx.shadowOffsetX = 10;
  ctx.shadowOffsetY = 10;
  ctx.shadowColor = 'black';
  ctx.shadowBlur = 30;
  ctx.drawImage(tmpCanvas,0,0);
}
<img src="http://www.google.com/images/icons/product/chrome-48.png" onload="drawImageWithShadow(this)" />
<br>
<canvas id="mainCanvas" style="border:1px solid black"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Chrome浏览器中使用HTML5画布绘制图像阴影 的相关文章

  • 无法加载资源:net::ERR_CONTENT_LENGTH_MISMATCH

    此错误消息是什么意思以及如何解决它 这是来自 Windows 7 上 Google Chrome v33 0 的控制台 无法加载资源 net ERR CONTENT LENGTH MISMATCHhttp and img url here
  • 哪些 Chrome 键盘快捷键不能被 Javascript 覆盖?

    You can preventDefault 在 Chrome 快捷方式上使用 JavaScript 但您无法使用所有这些快捷方式 Ctrl S and Ctrl F you can override Ctrl W you cannot T
  • 使用 Chrome 扩展程序截取整页屏幕截图

    是否可以在 Chrome 扩展程序中捕获整个页面的屏幕截图 包括首屏以下的内容 The 捕获可见选项卡 http code google com chrome extensions tabs html似乎仅限于可见区域内显示的内容 标准方法
  • 在 google chrome 上选择网络摄像头

    当您有多个网络摄像头时 您可以在 chrome 上选择网络摄像头 设置 gt 内容 gt 媒体 但是 我想从脚本中选择相机 如何通过 Html5 或 javascript 选择相机 Check 这是巨大的代码 所以我没有将其粘贴到这里 这是
  • Chrome 扩展发送键

    有没有办法从 chrome 扩展模拟按键 例如 当我单击扩展按钮时 我可以指定将 ABC 键发送到浏览器窗口 不幸的是没有 这是一个 JavaScript 问题 Chrome API 不提供任何帮助 您所能做的就是调度一个按键事件 请参阅这
  • Chrome 不渲染
    标签,FF 渲染

    我有一个非常烦人的问题 我的网站有一个表单 可以在 Firefox 中运行 但不能在 IE 或 Chrome 中运行 它是用 WordPress 的 Gravity Forms 制作的 但这可能与该问题无关 因为另一个表单插件也出现了同样的
  • 动态加载内容脚本(chrome扩展)

    我有一个 chrome 扩展 其中有 2 个由清单注入的内容脚本和一个后台脚本 manifest version 2 name Test permissions tabs
  • 窗户可以关闭吗?

    我需要知道是否window close 实际上是要关闭窗口 这不是重复的关闭窗口 如何确定窗口是如何打开的 https stackoverflow com questions 17689005 close window how to det
  • CSS 链接图像带有下划线(“a”显示设置为阻止)

    我有一个菜单 我希望每个单独的项目中文本周围的所有空间都能将用户带到指定的页面 我在网上查了一下 发现最好的解决方案是将 a 显示设置为阻止 如下 a display block height 100 text decoration und
  • Websocket 的基本身份验证

    当我使用 chrome 创建新的 websocket 时 new WebSocket ws gert email protected cdn cgi l email protection 8001 dbname Nodejs服务器接收 GE
  • Chrome - 儿童剪辑CSS3圆形边框?

    请参阅以下 JSFiddle http jsfiddle net zScKW http jsfiddle net zScKW 请注意 子 div 剪裁了其父 div 的边框 如果我删除边框 但保留圆角 该项目将按照我们的预期进行剪辑 Fir
  • 适用于 Canvas HTML5 的 Jquery 画笔大小滑块

    您好 我正在尝试为我的 Canvas 绘图应用程序创建一个画笔大小滑块 有人可以帮助解决这个问题吗 我发现的一些方法与我运行应用程序的 Jquery 库不兼容 谢谢 你的问题在细节上有点简短 O 以下是如何使用 input type ran
  • 延迟属性 (Chrome)

    Chrome 对我来说一直是网络标准的参考 不幸的是defer http www w3 org TR REC html40 interact scripts html adef defer不支持 IE 从 5 5 版本开始支持 为什么 js
  • 默认情况下,所有 Google Chrome 扩展程序都是开源的吗?

    我想知道如果我编写了 Google Chrome 扩展程序 任何人都可以使用我的代码吗 看起来人们将能够看到您的代码 如果他们可以看到您的代码 他们就有可能使用它 视窗 C Documents and Settings USERNAME L
  • 画布中圆弧的不同 fillStyle 颜色

    我想这个问题的解决方案非常简单 如果这是非常明显的 请提前道歉 但我似乎无法弄清楚如何为两个不同的弧设置两个不同的 fillStyles 我只是想能够绘制不同的彩色圆圈 下面我介绍了我通常如何在画布中使用其他形状 绘图方法来完成此操作 但由
  • Selenium 不打开指定的 URL 并显示数据:,

    我正在尝试在 chrome 中使用 selenium 打开 URL 我有 chromedriver 可用 以下是我要执行的代码 from selenium import webdriver chrome options webdriver
  • Web 语音 api 目前无法在 chromium / electro / nw js 中工作?

    我一直在使用 Electron 创建一个桌面应用程序 它使用 javascript Web Speech API 直到最近几周 它都运行良好 目前 它不起作用 我尝试使用 Nw js 并且还在 Chromium 浏览器中检查了它 甚至默认的
  • Chrome 扩展上的运行时错误

    Premise 尝试着写一个极其简单的chrome 扩展 作为测试 我想添加控制台日志记录以进行调试 但是 我不断收到此错误 未选中运行时 lastError在跑步的时候webRequestInternal addEventListener
  • 为什么有些网站不允许更改字体大小?

    我几乎总是使用比默认字体大得多的字体浏览网页 使它更容易阅读 但有时我注意到有些网站不允许放大字体 至少在 Chrome 上是这样 比如这个网站 http en support wordpress com domains map exist
  • 使用 javascript 分割图像

    如何使用 javascript 获取单个图像的一部分并将其存储在数组中 然后在 html5 画布上随机显示 您可以使用drawImage 方法的剪切参数并将剪切的图像绘制到动态创建的画布上 一个例子可以是 function getClipp

随机推荐

  • 传递嵌套属性时出现“NoMethodError(未定义方法‘with_in Different_access’...”

    在谷歌上搜索了一段时间 但没有运气 在传递嵌套属性时 我的 Web 服务上出现 NoMethodError 未定义方法 with in Different access 错误 其他嵌套的也可以工作 但是它们是一对一的 而这是一对多的 cla
  • 在 Grails 中表示金钱(价值 + 货币)的最佳实践

    我对 Java 货币类型及其在 Grails 中的使用方式不太熟悉 虽然我还没有使用它 但我看到了一个标签
  • iOS - 将图像发送到 Instagram - DocumentInteraction

    是否可以绕过 Action Share Sheet 将图片分享到 Instagram 请注意我是aware of the UIDocumentInteractionController和hooks事实上它工作得很好 通过他们的示例代码 您可
  • 以编程方式从 appengine 获取版本列表

    我想从 appengine 获取已部署版本的列表 无论是从远程 API 还是通过 appcfg py 我似乎找不到任何方法来做到这一点 当然不是有记录的方法 有谁知道有什么方法可以做到这一点 甚至没有记录 您可以在管理控制台的 管理日志 下
  • 如何删除嵌套字典中的键及其所有值,然后像以前在 Python 中一样以“0”、“1”、“2”、“3”顺序更改和排列键

    我希望你们一切都好 我在从 json 文件中删除字典时遇到问题 我有一个 users json 其中包含如下数据 0 course fjjc password fhjf username 1800101253 1 course fjjc p
  • 基于 Woocommerce 中用户总购买金额的自定义购物车通知

    我正在尝试根据 Woocommerce 中的用户总购买金额显示自定义购物车通知 基于此答案代码 根据 Woocommerce 中的客户总购买金额添加百分比折扣 https stackoverflow com questions 521417
  • UIImageView 无法缩放

    我想在弹出视图上缩放图像 我创建了 UIView 子类 基于this https developer apple com library ios samplecode ScrollViewSuite Introduction Intro h
  • 添加 jQuery 监听器会降低浏览器性能吗?

    我有一个应用程序 它通过 Ajax 带来响应 并在每次刷新时创建 5 20 个新的 jQuery 单击侦听器 IE 和 Mozilla 浏览器的使用速度似乎都在变慢 这会显着降低浏览器性能吗 听众能被 释放 吗 补充一下安迪关于现场的说法
  • JavaScript 闭包问题

    我知道这种问题被问了很多 但我仍然无法找到一种方法来使其正确工作 代码 function doStuff for var i 0 i lt elementsList length i elementsList i previousSibli
  • Ionic 3:使用手机后退按钮关闭模式

    我尝试在 Ionic 应用程序中覆盖手机的后退按钮 如果我不在页面中 此代码允许我打开一个模式来关闭应用程序 否则关闭页面 但这不允许我关闭打开的模式 如何检测我是否处于模式中以关闭它 platform registerBackButton
  • PyOpenGL无法编译着色器

    我在 Debian 上使用 Python3 Qt4 和 PyOpenGL 以及 python3 pyside 包进行测试 这是最小化的示例代码 bin env python3 from OpenGL GL import shaders GL
  • 如何从 C# 读取 PowerShell 脚本 stdout 和 stderr

    我正在实现一个自定义 PowerShell 主机 我需要读取 PowerShell 脚本的 stdout 和 stderr 问题是 当我将调用管道返回的对象转换为字符串时 我没有得到标准输出 但是 当我将 out string cmdlet
  • 如何将 SQL 查询的所有结果存储在多维数组中?

    大家好 我想将我的数组转换为其他数组类型 请帮助我 我 我用这个 row mysql fetch array result MYSQL ASSOC 输出是 Array user id gt 250 name gt a age gt sfsf
  • codeigniter 中的会话超时动态

    我有关于 codeigniter Timeout 的问题 我知道配置文件夹手动设置会话超时 如 l config sess expiration 123 但我需要网站管理员在管理页面动态管理会话超时 请帮助我如何实现这个逻辑 我尝试了这个逻
  • 检查 IIS 是否已安装并正在运行

    在我们的应用程序中 我们想要确定计算机中是否安装了 iis 如果安装了 那么我们需要确定它是否正在运行 有什么办法可以获取这些详细信息 使用托管代码检测 IIS 是否已安装以及 ASP ASP NET 是否已注册 http www code
  • 路由“Feed”的组件必须是 React 组件

    我正在尝试理解reactnavigation 并且正在设置一个概念应用程序来理解 我一开始遇到的困难是 我收到错误消息 路由 SomeRoute 的组件必须是 React 组件 我确实知道这意味着什么 但我不明白为什么会引发此错误 我有以下
  • hg 从存储库中删除目录?

    我想从存储库中删除一个目录及其中的所有文件 我已经删除了所有文件hg remove 但是如何删除目录本身呢 一旦我提交所有删除的文件 它会自动消失吗 是的 因为 Mercurial 根本不跟踪目录 只跟踪文件 所以它只创建其中包含文件的目录
  • 如何获取上次启动时的 NSTimeInterval 值

    我需要从上次设备启动中获取 NSTimeInterval 值 我发现 CACurrentMediaTime 适合此任务 但在我的应用程序中 我没有使用 Core Animation 并且我认为这不是包含此框架以获取此功能的最佳方法 还有另一
  • 验证 $_REQUEST 内容是否为 int

    我正在尝试执行一个基本操作 检查字符串是否是数字 这不起作用 qty REQUEST qty if is int qty FALSE echo error else echo ok 这个的作用是 qty 1 if is int qty FA
  • 如何在Chrome浏览器中使用HTML5画布绘制图像阴影

    我们可以在 HTML5 中通过 g shadowBlur 方法绘制阴影 在大多数浏览器中都可以 除了 Chrome 当我绘制透明图像阴影时 如下所示 我该如何解决这个问题 我的 Chrome 版本是 Chrome for Mac OS X