konvajs 序列化包含图像的阶段

2023-12-22

我正在使用 Konvajs 创建一个自定义标签制作器,一切都运行良好,直到我尝试将阶段序列化为 JSON。

用户通过三个步骤创建自定义标签。第一步,他们从我们的库中选择一个具有遮罩区域的模板图像。第二步允许他们上传个性化图像,该图像放置在第一步加载的图像后面。有一些外部控件允许用户缩放和移动图像,以便在遮罩区域中渲染图像。第三步允许他们添加文本。

我希望用户能够将他们的标签保存到他们的库中,以便他们可以再次使用它,但能够修改这三个步骤中的任何一个。这意味着我需要将阶段序列化为 JSON 字符串,但图像属性未保存在 JSON 中。

JSON 字符串: {"attrs":{"width":500,"height":667,"id":"label-maker"},"className":"舞台","children":[{"attrs":{}, "className":"层","children":[{"attrs":{"name":"template"},"className":"Image"}]},{"attrs":{},"className":"Layer","children":[{"attrs":{"x":160,"y":41.5,"text":"[在此处输入名称]","fontSize":30,"fontFamily":"Calibri","fill":"#555","name":"textundefined","align":"center","draggable":true,"offsetX ":114.22119140625},"className":"文本"}]}]}

我正在使用 Konvajs toJSON() 来序列化我的舞台。

function save() {
     var json = stage.toJSON();
     var dataURL = stage.toDataURL('image/png');
     //alert(json);
     $.ajax({
         type: "POST",
         url: "label-maker/image-handler.php?action=save",
         data: {jsonFileText: json, image: dataURL},
         error: function (request, error) {
             console.log(arguments);
             alert(" Can't do because: " + error);
         },
         success: function () {
             alert(" Done ! ");
         }
    });
 }

默认情况下Konva不将有关图像源的信息保存到 JSON。所以你必须手动执行此操作。

当你创建时Konva.Image您可以将其来源保存为属性:

// path is url or base64 string from user's input
imageNode.setAttr('src', path);

然后在反序列化时,您可以从源加载图像数据:

const stage = Konva.Node.create(json, 'container');
stage.find('Image').forEach((imageNode) => {
    const src = imageNode.getAttr('src');
    const image = new Image();
    image.onload = () => {
        imageNode.image(image);
        imageNode.getLayer().batchDraw();
    }
    image.src = src;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

konvajs 序列化包含图像的阶段 的相关文章

随机推荐

  • 如何识别文件内容是ASCII还是二进制

    如何使用 C 识别文件内容是 ASCII 还是二进制 如果文件包含only十进制字节 9 13 32 126 它可能是纯 ASCII 文本文件 否则就不是了 但是 它可能仍然是另一种编码的文本 If in addition对于上述字节 该文
  • 如何用Java读取TIFF文件?

    假设我有一个非常大的 TIFF 图像作为输入 由于我必须遵守内存规范 我无法完全加载此图像 所以以下不是一个选择 BufferedImage data ImageIO read image 是否有任何 Java 库允许读取图像的特定部分而不
  • Eclipse 中的 Dagger 设置

    我在为 Dagger 存储库中的 Coffee 示例设置 Eclipse 项目时遇到问题 下面是错误消息和我正在使用的 Eclipse 设置的屏幕截图 任何建议将不胜感激 Thanks 看起来你的 Javawriter 版本应该是2 2 1
  • ASP.NET Identity 和 IdentityServer 连接

    有人可以解释一下 Identity 和 IdentityServer 之间的联系吗 最近有一篇文章说将会有新版本的IdentityServer 即IdentityServer 4 我正在做一个 ASP NET 5 项目 我之前只听说过 Id
  • 如何在启动主应用程序时启动 Finder 同步扩展?

    在我的 Cocoa 应用程序中 我有一个 finder 同步扩展 启动应用程序时 我的查找器同步扩展不会自动启动 我需要进入系统偏好设置 gt 扩展并启用它 如何确保在启动主应用程序 app 文件时查找器同步扩展已启动并启用 查看https
  • MVC 4 忽略 DefaultModelBinder.ResourceClassKey

    添加资源文件到App GlobalResources with a PropertyValueRequired关键和变化DefaultModelBinder ResourceClassKey文件名对 MVC 4 没有影响 字符串The 0
  • Android 如何使用Environment.getExternalStorageDirectory()

    我该如何使用Environment getExternalStorageDirectory 从SD卡读取存储的图像还是有更好的方法 Environment getExternalStorageDirectory getAbsolutePat
  • 帮助进行模板专业化

    我正在使用 学习模板函数专业化规则 我从这个函数开始 template
  • PDF 文件是否包含 iref 流?

    我仍然在努力从 PDF 文件中读取数据 我使用 PDFsharp 如何在不使用 Open 方法的情况下检查文件是否包含 iref 流 如果文件包含iref 流 方法 Open 会引发异常 有一个已知的解决方法可以让您同时打开包含 iref
  • JUnit @Theory:有没有办法抛出有意义的异常?

    我最近尝试了 Junit Theory 测试风格 这是一种非常有效的测试方式 但是 我对测试失败时引发的异常不满意 例子 import static org junit Assert assertEquals import org juni
  • ASP.NET WEB API 服务器上存储的授权令牌信息在哪里?

    在用户注册后 在我的 Web Api 2 Identity 2 应用程序中 我在单个表中有一条记录 AspNetUsers 我使用以下 http 请求来获取令牌 POST https localhost 44304 Token HTTP 1
  • 为什么使用“{}”的 R 代码比使用“()”的 R 代码更快?

    为什么R代码带有 一般来说比那个更快 下面的例子 n 10000000 w1 numeric n w2 numeric n r rnorm n t1 Sys time for i in 1 n w1 i r i 2 1 1 t1 Sys t
  • 在 Vim 中,如何找出组合键的作用

    我不小心按下了一个快捷键 我知道vim做了一些事情但我不知道是什么 我怎样才能知道该快捷键的作用 有两个潜在的信息来源 首先 如果它是内置快捷方式 通常会在帮助文档中 例如 如果你这样做 help CTRL I 它将带您进入有关在跳转列表中
  • HTML Tidy 在 JavaScript 字符串文字中的脚本标记上失败

    我在 PHP 中使用 HTML Tidy 它产生了意外的结果 因为关闭打开的标签 我在 HTML Tidy 的在线版本上尝试过这个 http www dirty
  • 安装后使用 WiX/Burn 启动应用程序

    我知道 WiX MSI 中存在类似问题 但在使用创建的引导程序 EXE 文件中启动应用程序时遇到问题Burn http en wikipedia org wiki WiX Burn安装后 我的完整包如下 如果对场景有任何影响 引导程序将以被
  • 如何在手动表单提交中添加post参数?

    我想在经过一些复杂的检查后手动提交表格 由于检查涉及用户交互 因此整个检查过程不是同步完成的 这是场景 用户单击按钮 HTML
  • 如何配置curl仅显示百分比?

    是否有一个选项可以让curl命令仅显示shell的百分比输出而不是所有这些 例如 Total Received Xferd Average Speed Time Time Time Current Dload Upload Total Sp
  • 更改聚合物纸元素默认字体

    将 Polymer Paper Elements 默认字体从 Roboto 更改为自定义字体的最佳方法是什么 我用的是 paper font common base mixin 来定义我的字体 这适用于大多数地方 但不是全部 在像这样的地方
  • gnu ld/gdb:单独的调试文件。当有太多调试信息需要链接时如何生成调试文件?

    现在有gdb and binutils支持将调试信息与要调试的二进制文件分开 描述这一点的文档可以在以下位置找到 gdb 单独的调试文件 http sourceware org gdb onlinedocs gdb Separate Deb
  • konvajs 序列化包含图像的阶段

    我正在使用 Konvajs 创建一个自定义标签制作器 一切都运行良好 直到我尝试将阶段序列化为 JSON 用户通过三个步骤创建自定义标签 第一步 他们从我们的库中选择一个具有遮罩区域的模板图像 第二步允许他们上传个性化图像 该图像放置在第一