【问题标题】:How can I perform or process multiple operation on a single image?如何对单个图像执行或处理多个操作?
【发布时间】:2020-06-15 00:22:44
【问题描述】:

所以这是我的问题陈述:我在我的编辑器中提供了要对图像执行的某些操作,例如旋转、裁剪、调整大小等。我对图像执行的这些操作提供了我存储在我的图像数据节点对通过预签名 URL 上传到 S3 的图像执行它。例如,在裁剪图像时,我将获得诸如 x、y、宽度和高度之类的裁剪属性,我必须从中裁剪原始图像,对于旋转,我将获得角度等。

当图像上传到 S3 时,其中一些属性会默认初始化并存储在图像数据节点中。然后,当执行与此相关的操作时,这些属性会发生变化。我存储在图像中的属性结构如下:

const properties = {
    crop: {
      // Here x & y: position to place crop container of specific width & height mentioned below
      unit: '%',
      x: 0,
      y: 0,
      width: 100,
      height: 100
    },
    rotate: 0 // Angle in degrees
  };

当在我的编辑器中加载文档时,图像的这些属性将被访问,然后分别应用于操作以在前端显示它。我用来应用这些属性的方法是 CANVAS 方法,用于从相应的操作生成一个 blob 以显示处理后的图像。

我的主要目标是使用我从操作中获得的属性对原始图像执行这些操作。但是随着操作的增加,为了将这些属性正确地应用于原始图像,操作顺序的优先级也是必不可少的。例如,我有一个原始图像,我将它逆时针旋转 90 度,然后应用裁剪,然后旋转回它的方向,所以我得到的裁剪参数将不同于我必须在原始图像上应用的参数,以便跟踪操作顺序在这里也是必不可少的。所以我也在寻找一种方法来正确存储对原始图像执行的这些操作序列,这样我就不必每次执行操作时都保存输出图像,即减少 API 调用。

【问题讨论】:

    标签: javascript reactjs amazon-web-services aws-lambda


    【解决方案1】:

    AWS 已经正式提供了一个名为 Serverless Image Handler 的解决方案,它还通过 S3、Lambda 和 CloudFront 提供空中图像处理。

    它提供了您想要的类似功能。它也是开源的,支持一键部署到您的帐户!

    这是一个很好的参考和生产级别的实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多