将图像 2 重叠在图像 1 上

2024-02-14

我们在网站中显示 image1 如下:

现在我们提供上传 image2 的选项,我们想要上传的 image2 应该与现有的 image1 重叠,例如here http://www.dailyobjects.com/custom-cases/apple/iphone-se/custom-iphone-se-cases/slim.

但现在当我们上传 image2 时,image1 重叠在 image2 上。

var canvas = new fabric.Canvas('canvas');
document.getElementById('file').addEventListener("change", function (e) {
  var file = e.target.files[0];
  var reader = new FileReader();
  reader.onload = function (f) {
    var data = f.target.result;                    
    fabric.Image.fromURL(data, function (img) {
     // var oImg = img.set({left: 0, top: 0, angle: 00,width:100, height:100}).scale(0.9);
	  var oImg = img.set({left: 0, top: 0, angle: 00, width: canvas.getWidth(), height: canvas.getHeight()});
      canvas.add(oImg).renderAll();
      var a = canvas.setActiveObject(oImg);
      var dataURL = canvas.toDataURL({format: 'png', quality: 0.8});
    });
  };
  reader.readAsDataURL(file);
});


var img = new Image();
img.onload = function() {
  //draw after loading
  var canvas = document.getElementById('case_canvas');
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
}

img.src = "https://i.stack.imgur.com/xgNw7.png";
//^^ this will start loading the image
/*.canvas-container {
  background: url("https://i.stack.imgur.com/xgNw7.png") no-repeat fixed center;

  }
  */
 
 .canvas-container {
 width: 300px; height: 500px;  position: relative; -webkit-user-select: none; top:900px;
 }
 
 #canvas
 {
  border: 1px solid black;
  top:500px;
}

#file
{
	position:relative;top:900px;
}

.lower-canvas

{
	position: absolute; width: 300px; height: 500px; bottom:400px; left: 0px; -webkit-user-select: none;
}

.upper-canvas {
position: absolute; width: 300px; height: 500px; left: 0px; top: 0px; -webkit-user-select: none; cursor: default;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.min.js"></script>
<input  type="file" id="file"><br />
<canvas id="canvas" width="450" height="450"></canvas>	

<div class="canvas-container">
<canvas id="case_canvas" width="300" height="500" class="lower-canvas" ></canvas>
<canvas class="upper-canvas " width="300" height="500" ></canvas>
</div>

一旦你点击Run code Snippet,请向下滚动查看结果。


Add

#case_canvas {
     z-index:-1 
}

到你的CSS。这会将画布定位在任何上传的图片后面,并带有案例的轮廓。但请确保上传的图片尺寸正确。例如通过.scale(x)或者通过将宽度设置为画布宽度的一定比例,因为现在的方式,如果它足够大,它将覆盖整个画布,并且案例根本不可见。

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

将图像 2 重叠在图像 1 上 的相关文章

随机推荐

  • java连接到sql server 2008express

    我尝试连接到我的 BD 这是我的代码 public class JavaSQLTest param args the command line arguments public static void main String args tr
  • 运行scala代码jar出现NoSuchMethodError:scala.Predef$.refArrayOps

    我的代码在idea中通过本地模式可以正常运行 当我打印成jar包上传到我部署的SPARK服务器上运行时 出现NoSuchMethodError scala 预定义 refArrayOps 出现了 出错的那行代码如下val expectArr
  • 单元测试应该涵盖压力测试吗?

    我想知道你们是否有任何好的读物来考虑将什么分类为单元测试 验收 集成测试 我有以下场景 我们在工作中就是否应该在单元测试中进行了一些辩论 在我们的数据访问层 有些语句使用了sql比如 select from people where id
  • 使用 C# 发送 Outlook 会议请求

    我希望从 C 发送 Outlook 会议请求 我有下面的代码 它可以完成这项工作 但是 string startTime1 Convert ToDateTime startTime ToString yyyyMMddTHHmmssZ str
  • 方法调用可能会产生 java NullpointerException

    我有一个代码 public String getNameUpdateEvent long id Cursor mCursor db rawQuery select name from events WHERE id id null if m
  • 带模板参数的 C++ 函数调度

    我正在重构一个大类 我们称之为Big 有大量的复制粘贴代码 大部分复制粘贴代码存在于switch case只有涉及的类型最终不同 该代码是基于一个切换enum类的成员变量 其值仅在运行时才知道 我尝试解决这个问题需要有一个Dispatche
  • Azure Pipelines DotNetCoreCLI - .Net Core SDK 生命周期结束

    我在 Azure CI 管道中收到错误 尝试运行 DotNetCoreCLI 时restore task 已经报废了几个小时的网络无济于事 相关问题没有解决方案可以帮助我理解问题 基本上 我们已经在存储库中添加了一个新项目 该项目需要运行
  • 大整数的按位运算

    我正在实现 BER 压缩整数的解码 最近我发现了与大整数按位运算相关的奇怪 JavaScript 行为 E g var a 17516032 has 25 bits alert a lt lt 7 outputs 2052915200 al
  • 哪些 x86 C++ 编译器本身是多线程的?

    现在 几乎每个用户在台式机上 以及大量笔记本电脑上 都拥有 2 或 4 个核心 高级用户拥有 6 12 个 AMD 或 i7 核心 哪些 x86 x86 64 C C 编译器可以使用多个线程进行编译 已经有一个 make j N 类似的解决
  • 我使用的是哪个版本的 python time 模块

    如何确定安装了哪个版本的 python 模块 time 对于其他模块 version version or version 工作 但是时间上 这两种方法都会返回错误 模块 对象没有属性 version 或 版本 Module time内置于
  • Google Analytics Regex - 无负向前瞻的替代方案

    Google Analytics 分析 在其过滤器中不再允许负向前瞻 事实证明 创建仅包含我希望包含的链接的自定义报告非常困难 包含负向前瞻的正则表达式在启用时可以工作 test com index php s 这匹配 test com t
  • 聚合 MongoDB 中子文档的总计

    我有一个如下所示的文档 我本质上想为子文档中的项目生成一个聚合 本质上 每个文档都是一个销售记录 其中包含销售详细信息和包含每个商品销售数量的子文档 数组 我想生成所有已售商品的摘要 因此 一个示例集合是 non relevant 1 AB
  • 在训练期间评估模型会影响其性能 PyTorch

    In PyTorch 我想在验证集上评估我的模型eval step在训练期间 我写了这样的代码 def tune model loader train loader dev optimizer epochs eval step for ep
  • 防止 Spring WebFlow 应用程序中的跨站点请求伪造

    我正在寻找一种 希望是简单的 添加方法CSRF http www codinghorror com blog 2008 10 preventing csrf and xsrf attacks html对基于 Spring WebFlow 2
  • Spring的@Cacheable注释可以与注释方法的bean具有相同的作用域吗?

    有没有简单的方法来使用 Spring Cacheable使用非单例 例如会话范围 bean 进行注释并使缓存与所述 bean 具有相同的范围 Example import javax inject Inject import javax i
  • 如何在大事务下获得高性能(postgresql)

    我有 200 万条数据需要插入到 postgresql 中 但它却发挥了低效的表现 我可以通过将大事务分割成较小的事务来实现高性能插入器 实际上 我不想这样做 或者 还有其他明智的解决方案吗 不 更快的主要想法是在一个事务中完成所有插入 多
  • 为什么 CREATE VIEW 必须是批处理中的第一个语句? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 CREATE VIEW 必须是批处理中的第一个语句是否有任何逻辑原因 这样的设计背后的原理是什么 与其说它一定是first批处理中的声明 而是它
  • 处理 ARM 芯片的保留寄存器位

    我正在使用 ARM Cortex M3 的寄存器 在文档中 某些位可能是 保留的 我不清楚在寄存器上写入时应该如何处理这些保留位 这些保留位是否可写 我应该小心不要碰它们吗 如果我碰它们 会发生什么不好的事情吗 这是关于如何处理保留位的经典
  • 一次推送两条路由时不会调用 RouteAware didPushNext

    当同时推送两条路线到Navigator并使用RouteAware获取时 更新了当前状态 第一个路由的 didPopNext 没有 叫 似乎调用了 RouteObserver didPush 将调用 didPushNext 对于调用 Firs
  • 将图像 2 重叠在图像 1 上

    我们在网站中显示 image1 如下 现在我们提供上传 image2 的选项 我们想要上传的 image2 应该与现有的 image1 重叠 例如here http www dailyobjects com custom cases app