meteorjs 中的 imagemagick (在流星路由器和光纤的帮助下)

2024-05-16

我无法在meteorjs 中使用imagemagick。我正在开发一个小型 svg->png 转换器,其中包含一个 REST API 来提供转换后的图像。我用meteor-router实现了其余的api。 imagemagick 转换有效。但是,我无法将转换结果写入 http 响应中。我尝试通过使用光纤消除异步性来解决这个问题。但这仍然行不通。基本上,所有 request.write 调用在执行完之后都会被忽略。这是我的代码:

Meteor.Router.add({
  '/image/:hash' : function(hash) {

    var svg = Images.findOne({'hash' : hash}).svg;

    var request = this.request;
    var response = this.response;

    Fiber(function() {
      var fiber = Fiber.current;

      response.writeHead(200, {'Content-Type':'image/png'});

      var convert = imagemagick.convert(['svg:-', 'png:-']);

      convert.on('data', function(data) {
        response.write("doesn't work");
        //response.write(data);
      });

      convert.on('end', function() {
        response.write("doesn't work");
        //response.end();
        fiber.run({});
      });

      convert.stdin.write(svg);
      convert.stdin.end();

      response.write("works");
      Fiber.yield();
      response.write("doesn't work");
    }).run();

  }
});

我对meteorjs还很陌生。因此,我可能完全错误地使用 Fiber。或者我根本不应该使用纤维。有人可以帮忙吗?


感谢meteor-router的作者,我能够解决这个问题。我使用纤维的方式是错误的。如所述https://github.com/laverdet/node-fibres#futures https://github.com/laverdet/node-fibers#futures,不建议在代码和原始 API 之间没有抽象的情况下使用 Fiber。

幸运的是,Fiber 提供了一种称为 future 的抽象,它可以用于我的用例!这是工作代码:

var require = __meteor_bootstrap__.require,
Future  = require('fibers/future');

Meteor.startup(function() {
  Meteor.Router.add('/image/:hash', function(hash) {
    var response = this.response;
    var fut = new Future();

    response.writeHead(200, {'Content-Type':'text/plain'});

    setTimeout(function(){ 
      response.write("hello hello");
      fut.ret();
    }, 1); 

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

meteorjs 中的 imagemagick (在流星路由器和光纤的帮助下) 的相关文章

  • 从外部应用程序对流星用户进行身份验证

    我有一个流星应用程序 带有流星帐户 并且正在构建一个移动应用程序 如何通过移动应用程序对用户进行身份验证 我有一个 python web 服务 可以将数据发送到移动客户端 但我不知道如何从外部应用程序进行身份验证 我确实查看了DDP客户端
  • 使用 JQueryUI Autocomplete 和 Meteor 的规范方法

    使用 Meteor 我想了解使用 JQuery UI 自动完成处理大量服务器端数据的最有效方法 我有两个工作提案 想听听关于差异的意见 以及是否有更好的方法来做同样的事情 使用发布 订阅 Server Meteor publish auto
  • Image magick/PHP 无法处理大图像

    我有一个 PHP 脚本 用于调整用户 FTP 文件夹中图像的大小 以便在他的网站上使用 虽然调整大小的速度很慢 但该脚本已正确完成了过去的所有图像 然而最近 用户上传了 21 兆像素 JPEG 图像的相册 正如我发现的那样 该脚本无法转换图
  • 如何使用网格分割图像并保留透明度边界框

    我有一些 png 图像 我想将其分成几个部分 例如按网格或大小 但每个部分应具有与原始图像相同的边界框 透明度 Example 将图像分成两部分 原来的 200 89 Output 部分 1 png 200 89 第2部分 png 200
  • 使用 ImageMagick (PHP) 将 2 个图像并排合并为 1 个图像

    我认为这是一件容易的事 我有 2 张图片 JPG 我希望它们合并成一张图片 其中 2 张图片并排 所以我有图片 A 和图片 B 我想要图片 AB 并排 两个图像具有相同的宽度和高度 在本例中 宽度 200px 高度 300px 但是第二个图
  • Meteor:将所有用户发布到客户端

    为什么这不起作用 在客户端和服务器上 AllUsers new Meteor Collection allUsers 仅在服务器上 Meteor publish allUsers function return Meteor users f
  • 为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?

    我正在制作一个流星应用程序 并且添加了 mrt 帐户密码包以及 mrt 帐户 ui bootstrap dropdown 我添加了登录按钮 以便用户可以创建一个帐户 效果很好 我正在使用所有默认值 在服务器上我有代码 Accounts co
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引
  • 如何正确配置meteor以与节点文件上传模块“multer”一起使用

    我刚从流星开始 我找到并添加了 multer 包 meteor add pfafman multer 现在 我想知道如何配置meteor的服务器端来使用 在我的普通节点应用程序中 我像这样使用它 app use multer dest up
  • 在 Imagemagick 中创建阴影效果

    此图像中使用的边框阴影效果博客文章 http www adobe com devnet html5 articles css3 regions html似乎嵌入在图像本身中 不是 css3 如何在 imagemagick 中创建它 Edit
  • 如何使用永远和启动脚本在 ubuntu 上修复“错误:MONGO_URL 必须在环境中设置”?

    我刚刚在 EC2 ubuntu 服务器上部署了一个 Meteor js 应用程序 我安装了forever https npmjs org package forever并将以下启动脚本添加到 etc init meteor conf sta
  • 如何调试性能问题/优化您的流星应用程序

    我刚刚将 Meteor 应用程序部署到 Digital Ocean 上的生产服务器上 我注意到 对于大约 7500 个文档 完全获取对象 有选择地仅获取 3 个字段 并填充自动完成数据大约需要 3 5 秒 我相信对于如此数量的数据来说 它应
  • Meteor账号-密码+账号-输入及密码确认

    我在帐户输入包和帐户密码包中都没有看到任何允许在帐户输入的注册表单中使用密码确认字段的选项 我错过了什么吗 不 它的包上没有验证密码字段 您需要自己使用简单的 JS 创建 if password validationPassword Met
  • 无法通过 Homebrew 安装旧版本的 ImageMagick

    我需要安装 ImageMagick 6 5 8 或更早版本可能会这样做 但即使当我签出早期提交时 它也会安装最新版本 6 6 9 4 我这样做了 git checkout b im 6 5 6 ff414bb 然后确认工作树显示 image
  • 如何使 Meteor 上的服务器可以访问文本文件

    我很惊讶我无法在这里搜索我的答案 似乎没有其他人遇到这个问题 当您运行meteor服务时 js html等被打包在 meteor local build文件夹中 但它似乎排除了不是js或html的内容 我有一个名为 magicsets 的文
  • 去除 OCR 图像处理中的背景颜色

    我正在尝试删除背景颜色 以提高 OCR 对图像的准确性 示例如下所示 我会将所有字母保留在后处理图像中 同时仅删除浅紫色纹理背景 是否可以使用一些开源软件如Imagemagick将其转换为二值图像 黑 白 来实现这一目标 如果背景有不止一种
  • 从一个 Meteor 工作区切换到另一个

    示例 您制作了 todos 示例 并且它正在运行 突然 你想开始一个名为 西瓜 的全新项目 我的假设是我能够cd watermelon run meteor再次 并切换它 并非如此 建议 也许我应该提出这个请求 流星没有出现在jobs要么
  • Mongodb 聚合使用 $group 两次

    我在 mongo 中有一堆文档 其结构如下 id number 2 colour id name Green hex 00ff00 position id name Defence type position ageGroup id nam
  • 在 Meteor 中重绘模板期间加载消息

    我构建了我的第一个 Meteor 应用程序 我喜欢它 不过 现在它已经有了真实的生产数据 所以速度有点慢 我收到报告称 当我点击此按钮时没有任何反应 有什么方法可以在模板重绘期间显示加载消息 以便用户知道正在发生什么事情 为了进一步说明 请
  • 用于更新视图的 Meteor 异步代码

    所以我想做的是发出一个 HTTP get 请求 然后用响应更新视图 由于某种原因它不起作用 这是我所拥有的 我一直遵循这个要点 https gist github com 3443021 https gist github com 3443

随机推荐