jq绘图到图像

2023-12-25

我知道这个问题已经存在,但我认为它没有得到正确的回答。 到目前为止,我正在使用这种方法,对于我必须做的任何情节,它都 100% 有效。

请评论代码的效率等,我想知道其中是否还有错误。

非常感谢。

function jqplotToImg(obj) {
    var newCanvas = document.createElement("canvas");
    newCanvas.width = obj.find("canvas.jqplot-base-canvas").width();
    newCanvas.height = obj.find("canvas.jqplot-base-canvas").height()+10;
    var baseOffset = obj.find("canvas.jqplot-base-canvas").offset();

    // make white background for pasting
    var context = newCanvas.getContext("2d");
    context.fillStyle = "rgba(255,255,255,1)";
    context.fillRect(0, 0, newCanvas.width, newCanvas.height);

    obj.children().each(function () {
    // for the div's with the X and Y axis
        if ($(this)[0].tagName.toLowerCase() == 'div') {
            // X axis is built with canvas
            $(this).children("canvas").each(function() {
                var offset = $(this).offset();
                newCanvas.getContext("2d").drawImage(this,
                    offset.left - baseOffset.left,
                    offset.top - baseOffset.top
                );
            });
            // Y axis got div inside, so we get the text and draw it on the canvas
            $(this).children("div").each(function() {
                var offset = $(this).offset();
                var context = newCanvas.getContext("2d");
                context.font = $(this).css('font-style') + " " + $(this).css('font-size') + " " + $(this).css('font-family');
                context.fillStyle = $(this).css('color');
                context.fillText($(this).text(),
                    offset.left - baseOffset.left,
                    offset.top - baseOffset.top + $(this).height()
                );
            });
        } else if($(this)[0].tagName.toLowerCase() == 'canvas') {
            // all other canvas from the chart
            var offset = $(this).offset();
            newCanvas.getContext("2d").drawImage(this,
                offset.left - baseOffset.left,
                offset.top - baseOffset.top
            );
        }
    });

    // add the point labels
    obj.children(".jqplot-point-label").each(function() {
        var offset = $(this).offset();
        var context = newCanvas.getContext("2d");
        context.font = $(this).css('font-style') + " " + $(this).css('font-size') + " " + $(this).css('font-family');
        context.fillStyle = $(this).css('color');
        context.fillText($(this).text(),
            offset.left - baseOffset.left,
            offset.top - baseOffset.top + $(this).height()*3/4
        );
    });

    // add the title
    obj.children("div.jqplot-title").each(function() {
        var offset = $(this).offset();
        var context = newCanvas.getContext("2d");
        context.font = $(this).css('font-style') + " " + $(this).css('font-size') + " " + $(this).css('font-family');
        context.textAlign = $(this).css('text-align');
        context.fillStyle = $(this).css('color');
        context.fillText($(this).text(),
            newCanvas.width / 2,
            offset.top - baseOffset.top + $(this).height()
        );
    });

    // add the legend
    obj.children("table.jqplot-table-legend").each(function() {
        var offset = $(this).offset();
        var context = newCanvas.getContext("2d");
        context.strokeStyle = $(this).css('border-top-color');
        context.strokeRect(
            offset.left - baseOffset.left,
            offset.top - baseOffset.top,
            $(this).width(),$(this).height()
        );
        context.fillStyle = $(this).css('background-color');
        context.fillRect(
            offset.left - baseOffset.left,
            offset.top - baseOffset.top,
            $(this).width(),$(this).height()
        );
    });

    // add the rectangles
    obj.find("div.jqplot-table-legend-swatch").each(function() {
        var offset = $(this).offset();
        var context = newCanvas.getContext("2d");
        context.fillStyle = $(this).css('background-color');
        context.fillRect(
            offset.left - baseOffset.left,
            offset.top - baseOffset.top,
            $(this).parent().width(),$(this).parent().height()
        );
    });

    obj.find("td.jqplot-table-legend").each(function() {
        var offset = $(this).offset();
        var context = newCanvas.getContext("2d");
        context.font = $(this).css('font-style') + " " + $(this).css('font-size') + " " + $(this).css('font-family');
        context.fillStyle = $(this).css('color');
        context.textAlign = $(this).css('text-align');
        context.textBaseline = $(this).css('vertical-align');
        context.fillText($(this).text(),
            offset.left - baseOffset.left,
            offset.top - baseOffset.top + $(this).height()/2 + parseInt($(this).css('padding-top').replace('px',''))
        );
    });

    // convert the image to base64 format
    return newCanvas.toDataURL("image/png");
}

这不是一个错误,但如果您尝试将图像另存为 png,它会为图像生成透明背景。由您来处理背景图像。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jq绘图到图像 的相关文章

  • Facebook Instant Game - 上传捆绑的 zip 文件会导致 Web 托管出现 SDK 参考错误

    当我尝试上传简单的游戏 应用程序时 我收到一条错误消息 游戏必须通过我们的 CDN 引用我们支持的 SDK 之一 不过我已经给出了 SDK 参考 难道不是这个吗 我也浏览了 facebook 文档的 SDK 参考 但它对我不起作用 有人以前
  • HTML5 画布在缩放和旋转后平移

    我正在尝试用画布做一些事情 首先 我让用户上传图像 如果图像比我想要的大 我需要将其缩小 那部分工作得很好 最近我们遇到了 iPhone 用户上传图像的问题 这些都存在方向问题 我已经弄清楚如何提取方向 我的问题是当我操纵画布中的图像时会发
  • 推迟未使用的 CSS

    我有一个关键的 CSS 流程 可以防止页面首屏内容出现无样式内容闪现 FOUC 我陷入了 推迟未使用的 CSS 这一点 Google PageSpeed 见解 灯塔 和 或 Chrome 的性能审核强调了这一点 我已经阅读了其他文章 但它们
  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 当位置从相对固定变为固定时,div 的宽度会发生变化

    当 div topNav 的位置样式从相对更改为固定时 其宽度会更改几个像素 我找到了一个 jquery 插件 http imakewebthings github com jquery waypoints 它可以优雅地执行我正在寻找的相同
  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 一旦元素存在就触发事件的脚本?

    我正在尝试编写一个小 Greasemonkey 脚本来实现 Facebook 中的一些任务 例如隐藏新闻等 问题是 我有一个 DOM 中尚不存在的元素的 ID 这是点击帖子的箭头图标时出现的小框 如何通过 jQuery 创建一个事件处理程序
  • 错误 [ERR_UNSUPPORTED_DIR_IMPORT]:尝试在本地启动 Nodejs 应用程序时导入目录

    我在尝试将我的应用程序部署到 Heroku 时陷入了一个循环 我的进口声明 例如import cors from cors 由于 无法在 Common JS 中加载 ES6 模块 错误 似乎阻止了应用程序在生产环境中启动 在本地运行得很好
  • 量角器检查元素是否不存在

    我在基于角度的网站中有一个设置可以打开和关闭下拉菜单 如果关闭 则不会显示在主页上 对于量角器 我需要检查开关关闭时该元素是否不存在 但是 我不应该陷入 未找到元素 错误 因为它是一组许多测试中的一个 我该怎么做 我曾尝试这样做 expec
  • firebase 返回 onSnapshot 承诺

    我正在使用 firebase firestore 并且正在寻找一种返回快照承诺的方法 onlineUsers i want to return onSnapshot return this status database ref where
  • 如果是数字,Chrome 会重新排序对象键,这是正常/预期的吗

    我注意到某些评估电子商务网站的某些鞋码并将其输出到屏幕上的代码会打乱 Chrome 中的顺序 给出的 JSON 可以是 7 9149 9139 10455 17208 7 5 9140 9150 10456 17209 8 2684 914
  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • 如何在 Yii 框架中使用 jQuery?

    如何在 yii 中使用 jquery javascript 如何在 yii 中使用我的脚本 为什么这与以其他方式使用 jQuery 有什么不同 如何在yii中使用jquery 如上所述 您可以注册新的脚本块 也可以注册新的外部脚本文件 您还
  • 在 GeoJson 数据接收到的 Google 地图多边形上放置标签

    我想将带有信息的标签 或带有标签的 div 放在由下面的代码片段绘制的多边形上 样式属性已成功应用于要素 多边形类型 有谁知道如何向该特征添加文本并将其显示在多边形的中心 function handleGeoJson data map da
  • 应返回带有 html 代码的字符串的支持 bean 属性返回空字符串

    我的支持 bean 中有一个返回 html 代码的属性 public String getHtmlPrevisualizar return Hello world 我想要做的是在 iframe 中显示这个 html 代码 我用 JavaSc
  • 让屏幕阅读器读取使用 JavaScript 添加的新内容

    加载网页时 屏幕阅读器 例如 OS X 中的屏幕阅读器或 Windows 上的 JAWS 中的屏幕阅读器 将读取整个页面的内容 但是假设您的页面是动态的 当用户执行操作时 新内容就会添加到页面中 为了简单起见 假设您在某个位置显示一条消息
  • 基于 ajax 的弹出窗口中的 Mathjax + CKEditor 4 + CKEditor

    我已经配置了 CKEditor 4 并且我的页面上有以下内容 我的页面中有一个 CKEditor 设置值的两个选项 这两个选项本身分别选项两个基于 ajax 的弹出窗口 这些基于 ajax 的弹出窗口包含 CKEditor 现在我有以下问题
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var
  • React 不适用于 Android 4.4.2 Web 视图浏览器

    React 在我的 Android 手机上不起作用 我不认为这是我的代码错误 因为即使我写的唯一内容是 p hello world p 它仍然没有显示 在 chrome 远程吊顶上查看后 这显示了 Map is not defined 以前

随机推荐

  • 将自定义表单元素添加到 Adminhtml 表单

    有没有办法将自定义表单元素添加到 Magento Adminhtml 表单中 而不将自定义元素放置在lib Varian folder 我已经找到了本质上是一个的代码Varian Data Form Element factory publ
  • 如何等待Spark服务停止?

    对于我的 Spark API 我正在构建集成测试 有时我想停止并启动 Spark 实例 当我这样做时 有时会遇到这样的问题 我正在创建一个新的 Spark 实例 而旧的实例仍在单独的线程上关闭 了解 Spark 实例何时实际关闭会很有帮助
  • QTcpSocket / QTcpServer 内存管理 / 服务器崩溃

    我正在设计和制作一个服务器 它应该能够每秒处理大约 100 次以上的点击 我从服务器获取的信息只是 HTTP 标头 根据标头中的信息 它将查询数据库 不同线程 中的某些信息 并将最终信息发送回 QTcpServer QTcpServer 创
  • FBSQLException 键大小超出实现

    create table RHP EmployeElement amount double precision not null comment varchar 255 loan blob element codeId varchar 30
  • 同源图像 texImage2D 的安全错误

    我目前正在学习WebGL 在对 texImage2D 的调用 纹理加载完成时调用 中 我得到以下信息SecurityError Uncaught SecurityError Failed to execute texImage2D on W
  • Windows 中是否有代表“C:\Documents and Settings”文件夹或 C:\Users 文件夹的环境变量?

    Windows 中是否有表示配置文件路径的任何环境变量或其他格式 我想以这样的方式查询 我应该获取值 C Documents and Settings 如果是 windows XP 或 2k3 或 C users 如果是 vista 或 w
  • jQuery 对向后兼容性的支持程度如何?

    我们遇到了 Mootools 不太向后兼容的问题 特别是在拖放功能方面 我想知道是否有人遇到过 jQuery 不向后兼容的类似问题 我们开始大量使用它 并考虑升级到新版本以开始使用多个需要它的插件 如果我们摆脱旧版本会遇到任何问题吗 jQu
  • 如何从 Scala 执行 shell 内置命令

    我需要检查一些系统设置 例如ulimit n来自 Linux 中的 Scala 脚本 如果我处理普通命令 我会使用scala sys process封装如 import scala sys process println ls lha 不幸
  • 扩展隐藏了我想要访问的属性。解决方法?

    我正在使用两个 Pod DropDown https github com AssistoLab DropDown and SwiftyUtils https github com tbaranes SwiftyUtils DropDown
  • Prolog 中的简化旅行推销员

    我浏览过类似的问题 但找不到与我的问题相关的任何内容 我正在努力寻找一种算法或一组 循环 来找到一条路径CityA to CityB 使用数据库 distance City1 City2 Distance 事实 到目前为止我所做的事情如下
  • Selenium IDE - 总是因任何 500 错误而失败

    有没有一种简单的方法可以告诉 Selenium IDE 任何导致 http 500 响应的操作都意味着测试失败 我的测试有 75 个页面请求长 有时 我会在中间某个地方发生崩溃并烧毁 但测试结果会显示为绿色 查看selenium api j
  • iPad 弹出窗口 - 如何指向分段控件中的一个分段?

    我有一个 iPad 弹出窗口 想要向分段控件中的一个分段呈现 指向 下面的代码工作正常 除了指针指向分段控件的中间 我更希望它指向正确的段 即段 0 或段 1 if UI USER INTERFACE IDIOM UIUserInterfa
  • log4j的优点

    有什么好处log4j过度设定System out and System err输出到日志文件 从较高的层面来看 Log4j 相对于手动日志记录的优势在于 您可以将日志记录代码与您实际想要记录的内容以及您想要记录的位置和方式分离 有关日志记录
  • 字符串乘法与 for 循环

    我正在 CodingBat com 上解决一个 Python 问题 我为打印字符串 n 次的简单问题编写了以下代码 def string times str n return n str 官方结果是 def string times str
  • oauth2 框:grant_type 参数无效或参数丢失

    我不知道我做错了什么 但每次我尝试获取令牌 当然是在用户身份验证之后 结果总是 Invalid grant typeparameter orparametermissing 可能与Box API 在获取访问令牌时始终返回无效的 grant
  • 如何在 React 的 render() 中包含 Font Awesome 图标

    每当我尝试在 React 中使用 Font Awesome 图标时render 尽管它可以在普通 HTML 中工作 但它不会显示在生成的网页上 render function return div i class fa fa spinner
  • Google 地图上的移动位置跟踪

    我需要为我的网站开发一项功能 用户可以通过该功能跟踪 Google 地图上的任何手机号码 就像下面的链接一样 转到以下链接并输入9810098109文本框中的数字以查找其在地图上的位置 http wwwa way2sms com jsp L
  • Android:动画循环进度可绘制

    我需要一个看起来像旋转进度圈的可绘制对象 我想在 GridView 内的 ImageView 等中使用该可绘制对象 因此 根据其他帖子 我从文件夹 sdk platforms android xx data res drawable 中获取
  • Tensorflow错误:DLL加载失败:找不到指定的过程

    我尝试在我的windows8 1 64位python3 6 0中使用pip安装tensorflow cpu 使用pip install tensorflow但它给了我这个错误 Traceback most recent call last
  • jq绘图到图像

    我知道这个问题已经存在 但我认为它没有得到正确的回答 到目前为止 我正在使用这种方法 对于我必须做的任何情节 它都 100 有效 请评论代码的效率等 我想知道其中是否还有错误 非常感谢 function jqplotToImg obj va