html2canvas 不显示子 div 中的图像

2024-01-09

我正在尝试使用 html2canvas 从 div 创建图像

Brief:

  • 我有一个图像(png),其中有一个透明区域
  • 我有另一个图像(可以是 jpg 或 png)将被拖动/调整大小 使用a在上图的透明区域内看起来不错 辅助分区
  • 我有一个辅助 div,它将具有最高的 z-index 且可拖动 并可调整大小

用户满意后,他可以单击“完成编辑”来创建画布,最终结果显示所有图像

<div id="container">
  <div id="artwork">
    <img src="http://preview.ibb.co/gsvuPR/photo1.png" alt="photo1" border="0">
  </div>
  <div id="img">
    <img src="http://puckerupbuttercup.files.wordpress.com/2016/02/0092-happy-alone.jpg"/>
  </div>
  <div id = "dragger">
  </div>
</div>
  <a href="#d" id="done">
  done editing
  </a>


body {
  padding: 0;
  margin: 0
}
#container {
  background: #ccc;
  height: 400px;
  width: 600px
}
#artwork {
  width: 100%;
  z-index: 2;
  position: absolute;
}

#artwork img {
  height: 400px;
  width: 600px
}

#img {
  position: absolute;
  top: 0;
  left: 0;
  width:100%;
  height: 100%;
  z-index: 1;
}
#img img {
  position: relative
}
#dragger {
  border: dashed 3px grey;
  z-index: 3;
  cursor: all-scroll
}
#done {
  position: absolute;
  right: 0;
  top: 0;
  z-index: 444;
  padding; 5px;
  background: yellow
}


$("#img img").css("max-width",$("#artwork img").width());
$("#img img").css("max-height",$("#artwork img").height());
$("#dragger").css("max-width",$("#artwork img").width()-5);
$("#dragger").css("max-height",$("#artwork img").height()-5);
var img_h = $("#img img").height()-5;
var img_w = $("#img img").width()-5;

var right = $("#artwork img").width()-img_w-5;
var bottom = $("#artwork img").height()-img_h-5;

$("#dragger").width(img_w);
$("#dragger").height(img_h);

$("#dragger").draggable({
  axis: 'xy', 
  containment : [0,0,right,bottom],
  drag: function( event, ui ) {
        $("#img img").css('top', ui.offset.top +'px');
    $("#img img").css('left', ui.offset.left +'px');
  }
});

$("#dragger").resizable({
    containment: "parent"
});

$( "#dragger" ).on( "resize", function( event, ui ) {
    $("#img img").css('width', ui.size.width +5+'px');
  $("#img img").css('height', ui.size.height +5+'px');
  var img_h = $("#img img").height()-5;
    var img_w = $("#img img").width()-5;
  var right = $("#artwork img").width()-img_w-5;
    var bottom = $("#artwork img").height()-img_h-5;
  $("#dragger").draggable({
  axis: 'xy', 
  containment : [0,0,right,bottom],
  drag: function( event, ui ) {
        $("#img img").css('top', ui.offset.top +'px');
    $("#img img").css('left', ui.offset.left +'px');
  }
});
});

$("#done").on("click",function(){
 $("#dragger").toggle();
 html2canvas($("#container"), {
   allowTaint: true,
   logging: true,
   onrendered: function (canvas) {
    document.body.appendChild(canvas);
   }
 });
});

所有 javascript 均已准备就绪 在调整大小/拖动方面一切都很好,但 html2canvas 没有尽其所能在画布中显示图像以供用户保存

这是一个小提琴https://jsfiddle.net/p3vzgbzo/5/ https://jsfiddle.net/p3vzgbzo/5/

我在本地尝试了此代码,图像位于页面的同一路径上,但没有成功

我也尝试了 DataToURL,但没有返回任何图像

最终,如果可能的话,我希望将渲染的图像上传到服务器 我在想图像需要转换为基本代码吗?

谢谢


中的图像#container必须与页面来自同一来源,否则您必须通过 base64 嵌入它们。

使用 JSFiddle 处理 Base64 图像 https://jsfiddle.net/09jkep0s/

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

html2canvas 不显示子 div 中的图像 的相关文章

  • 按自定义字母顺序对数组进行排序

    如何对这样的数组进行排序 apple very auto tom tim violet 要按 v a t x b 等排序 不按字母顺序 violet very auto tom tim 在脚本中 我会做这样的事情 myArray sort
  • 如何滚动到 jQuery Mobile 中的页面元素?

    我有一个很长的 jQuery 移动页面 并且想在页面加载后滚动到该页面中间的元素 到目前为止 我已经尝试了一些事情 最成功的是 jQuery document bind mobileinit function var target if t
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • Node.js 和 Express:异步操作后如何返回响应

    我是 Node js 新手 所以我仍然对异步函数和回调很感兴趣 我现在的难题是如何在异步操作中从文件读取数据后返回响应 我的理解是发送回复的工作方式如下 这对我有用 app get search function req res res s
  • RxJS - 从可观察对象中获取最后 n 个元素

    我想从可观察对象中获取最后 3 个元素 假设我的时间线是这样的 a b c d e f g h i j gt where a b c d e f g h i j are emitted values 每当发出新值时 我想立即获取它 因此它可
  • 是否有 CSS 选择器可以选择文本溢出的元素?

    是否可以编写一个 css 选择器 仅选择已调用文本溢出行为的元素 div style width 200px I don t want to select this div div style width 200px But I do wa
  • 日期时间的自定义 JavaScriptConverter?

    我有一个对象 它有一个 DateTime 属性 我想通过 AJAX JSON 将该对象从 ashx 处理程序传递回网页 我不想使用第 3 方控件 当我这样做时 new JavaScriptSerializer Serialize DateT
  • 显示带有 jQ​​uery-ui 自动完成功能的微调器

    我一直在到处搜索 但没有看到有人这样做 是否有可能拥有某种带有 jQ uery UI 自动完成功能的旋转器 加载器 1 8 获取数据时 我的解决方案是使用 ui autocomplete loading CSS 类 该类在 ajax GET
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 如何制作具有移动外观的 emberjs 应用程序(如 jquery mobile 中的应用程序)?

    我有一个使用 Emberjs 的简单移动 Web 应用程序项目 对于外观和感觉 我想要类似于 JQuery Mobile 的东西 有没有办法混合使用 Emberjs 和 jquery mobile 如果是这样 怎么办 我查看了 Travis
  • 如何检查摘要周期是否稳定(又名“Angular 完成编译了吗?”)

    tl dr 最初的问题是 如何在每个摘要周期触发回调 但潜在的问题更有趣 因为这回答了两个问题 所以我继续修改了标题 Context 在解决了所有依赖项 nginclude API 调用等之后 我试图控制 Angular 何时完成 HTML
  • 可选链接在 create-react-app 中不起作用

    In a create react app项目 我正在使用 babel plugin proposal optional chaining在我的 babelrc中 但是 我有这个错误 Module parse failed Unexpect
  • 去除iOS输入阴影

    在 iOS Safari 5 上 我必须遵循输入元素 顶部内部阴影 我想删除顶部阴影 错误 webkit appearance不保存 目前的风格是 input border radius 15px border 1px dashed BBB
  • JQuery 表单提交不发送帖子

    我在使用 JQuery 提交表单时遇到问题 当按下提交按钮时 表单会正确提交 但是当我尝试使用时 somebutton click function form myForm submit 我还尝试从 Chrome 控制台调用表单提交 表单未
  • Safari 的 Javascript 与 document.write 的问题

    我的问题只发生在 Safari 上 IE FF Chrome 和 Opera 都可以完美运行 我正在向 DOM 添加一个对象 与 YouTube 的方式完全相同 具体取决于 ActiveX 或 NPAPI 因此在确定写入对象类型后 我通过以
  • 使用 php 变量更改 css 类

    这里需要您的帮助 正如标题所示 我正在尝试使用 PHP 变量更改 css 类 所以基本上我想创建一个回显某些代码的循环 但我希望第一个循环中的 div 类有所不同 它应该被隐藏 这是我为使问题变得清晰而编写的简化代码 我不知道错误在哪里 请
  • 如何在odoo中重写js函数

    我想加载 shop checkout url 函数是 odoo define change info order website sale change info order function require use strict oe w
  • 将元素添加到 D3 圆包节点

    我正在尝试制作一个可缩放的圆形包装图 我希望每个子圆圈包含一个较小的图表 该图表始终具有相同的结构 即 4 列 只有条形的高度会改变 我尝试添加一个简单的rect到目前为止我的图表 但矩形没有添加到圆圈中并且是静态的 JS var marg
  • 截断段落前 100 个字符并隐藏段落的其余内容,以通过更多/更少链接显示/隐藏其余内容

    我有一个超过 500 个字符的段落 我只想获取最初的 100 个字符并隐藏其余部分 我还想在 100 个字符旁边插入 更多 链接 单击更多链接时 整个段落应显示并编辑文本 更多 到 更少 单击 更少 时 它应切换行为 段落是动态生成的 我无

随机推荐

  • Assembly x86 Date to Number - 将字符串分成更小的部分

    我实际上希望在某个问题上找到正确的方向 我希望将 x86 Assembly 中的日期从格式 DD MMM YYYY 转换为唯一的数字 以便稍后可以对其进行冒泡排序并最终转换回来 所以 当我有一个字符串输入时 即 数据 inDate dw 0
  • 如何在 Power Shell 中正确增加不同月份期间的日期('yyyy-mm-dd')

    让我问一下如何在 PowerShell 中正确增加日期 我们希望获取指定时间段内格式为 yyyy mm dd 的日期列表 将它们传递给其他程序 例如 当 DateStart 2018 01 05 且 DateEnd 2018 01 08 时
  • 段落中文本上方的位置跨度

    我尝试在文本上方放置一些文本 如下所示 在音乐中使用 Am E This is a new sentence G C This is another sentence 但我不想使用空格 目前我有这个 p position relative
  • ASP.NET Core 2 razor 页面中的文件上传

    我正在尝试在 asp net core 2 razor 页面中进行简单的文件上传 我有下面的代码 请认识到它是不完整的 当我在 VS2017 中运行时 我检查我的 FileUpload 对象 不幸的是它为空 我希望它不是 null 之外的东
  • 向量中元素的默认构造

    在阅读此问题的答案时question https stackoverflow com questions 877385 dynamically allocating and setting to zero an array of float
  • 单元测试文件 I/O 方法

    我对单元测试还比较陌生 我用 Ruby 编写了一个类 它接受一个文件 在该文件中搜索给定的正则表达式模式 替换它 然后将更改保存回文件 我希望能够为此方法编写单元测试 但我不知道如何去做 有人可以告诉我如何对处理文件 I O 的方法进行单元
  • THREE.js 几何图不出现

    接下来我在自定义几何体上加载图像映射 它代表上图中的棕色几何形状 var aqua ground geo new THREE Geometry var top0 new THREE Vector3 aqua ground geo x NEG
  • 如何在 jQuery 中使用循环自动绑定多个事件处理程序

    我正在开发一个模拟棋盘的简单应用程序 因此我有一张有 64 个方格的桌子 我想通过编写一个循环的函数来绑定每个方块的事件处理程序 而不是写出 64 次 编辑 请注意 我希望处理程序返回一个数值来指示单击了哪个 div 我不需要处理程序来返回
  • PushViewController 两次当我双击太快时

    当我调用将 ViewController 推送到详细聊天控制器 一对一聊天 时 我有以下代码 但是 如果我单击得太快 视图控制器将被推送两次 动画我看了两遍 谁能指出我错误在哪里 该代码来自 LBTA 的 Youtube 课程 Fireba
  • x86-64 上的 C++:何时在寄存器中传递和返回结构/类?

    假设 Linux 上的 x86 64 ABI 在 C 中的什么条件下 结构会传递给寄存器中的函数 还是传递给堆栈上的函数 在什么条件下它们会返回到寄存器中 答案会随着课程的变化而变化吗 如果有助于简化答案 您可以假设单个参数 返回值并且没有
  • 是否可以仅对facet_wrap 的各个方面进行重新排序,而不对基础因子级别进行重新排序?

    示例数据框 df lt data frame x rep 1 10 4 y rnorm 40 Case rep c B L BC R each 10 我可以使用以下方法在其自己的方面绘制每个时间序列 ggplot df aes x x y
  • 在清单中找不到以下权限:2 [flutter]

    我正在使用permission handler来获取位置许可 它总是说 在清单中找不到权限 即使我尝试过 flutter clean import package permission handler permission handler
  • 找不到文件错误 python [重复]

    这个问题在这里已经有答案了 import os import time torrent folder os listdir r C users chris desktop torrents for files in torrent fold
  • 任务异常长时间处于 WaitingToRun 状态

    我有一个程序可以处理并行运行的各种任务 单个任务充当各种管理器 确保在运行下一个任务之前满足某些条件 但是 我发现有时任务会处于 WaitingToRun 状态很长时间 下面是代码 mIsDisposed false mTasks new
  • 是否有一个完整的示例来将 sympy 中的数学表达式写入 Microsoft Word 文档?

    这可能是一个愚蠢的问题 但我很绝望 我是一名数学老师 我尝试生成数学测试 我为此尝试了 Python 并完成了一些工作 然而 我不是一个专业的程序员 所以我对 MathMl prettyprint 之类的东西迷失了方向 有谁可以为我提供一个
  • Python 中“in”的结合性?

    我正在制作一个Python解析器 这是really让我困惑 gt gt gt 1 in in a False gt gt gt 1 in in a TypeError in
  • 使用 except 处理 express-jwt 中的参数化路由

    给定以下路线 router get api members confirm id function req res next 如何指定要排除的路由 我努力了 app use api expressJwt secret config secr
  • Knockout.js 语法

    我是 Javascript MVC 框架 Knockout js 的初学者 来自传统的 Javascript 以及一些 jQuery 经验 我在理解学习 Knockout js 的语法时遇到困难 考虑以下陈述 风景 ul class fol
  • 如何使用bat脚本将命令表达式的结果存储在变量中?

    我有下面的命令来计算遵循该模式的所有目录20 dir b 20 find c 2 例如 如果我有以下目录 该命令将返回 6 20090901 20090902 20090903 20090904 20090905 20090906 如何将该
  • html2canvas 不显示子 div 中的图像

    我正在尝试使用 html2canvas 从 div 创建图像 Brief 我有一个图像 png 其中有一个透明区域 我有另一个图像 可以是 jpg 或 png 将被拖动 调整大小 使用a在上图的透明区域内看起来不错 辅助分区 我有一个辅助