Как я могу выполнить или обработать несколько операций на одном изображении? - PullRequest
1 голос
/ 02 марта 2020

Итак, вот мое постановление проблемы: я предоставляю определенные операции для изображений в моем редакторе, такие как поворот, обрезка, изменение размера и т. Д. c. Эти операции, которые я выполняю над изображениями, обеспечивают определенный вывод, который я сохраняю в своем узле данных изображения, чтобы выполнить его над изображением, которое загружено на S3 через предварительно подписанный URL-адрес. Например, при обрезке изображения я получу свойства обрезки, такие как x, y, ширина и высота, из которых я должен обрезать исходное изображение, для поворота я получу угол, например c.

Когда изображение загружается на 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 для создания большого двоичного объекта из соответствующей операции, чтобы показать обработанное изображение.

Моя основная задача - выполнить эти операции над исходным изображением со свойствами Я получаю от операции. но с увеличением количества операций приоритет последовательности операций также важен для правильного применения этих свойств к исходному изображению. Например, у меня есть исходное изображение, я поворачиваю его на 90 градусов против часовой стрелки, затем применяю обрезку, а затем поворачиваю обратно к ее ориентации, так что полученный параметр обрезки будет отличаться от того, который я должен применить к исходному изображению, чтобы отслеживать работу последовательность также важна здесь. Поэтому я также ищу способ, которым я могу правильно хранить эти последовательности операций, выполненные на исходном изображении, чтобы мне не приходилось сохранять выходное изображение каждый раз, когда выполняется операция, то есть, чтобы уменьшить вызовы API.

1 Ответ

0 голосов
/ 03 марта 2020

AWS уже официально предоставляет решение под названием Безсерверный обработчик изображений , которое также обеспечивает манипулирование изображениями в эфире через S3, Lambda и CloudFront.

Оно предоставляет те функции, которые вам нужны. Также он с открытым исходным кодом и поддерживает развертывание в один клик в вашей учетной записи!

Это хороший эталонный и производственный уровень реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...