Serverless 图片处理 - 轻松实现图像处理服务

Serverless 架构的出现让前端开发者更加专注于业务逻辑的实现,而不需要过多关注服务器部署和管理问题。今天,我们将介绍如何使用 Serverless 架构实现图像处理服务,以便于快速处理图片,减轻服务器负担,提高用户体验。

什么是 Serverless?

Serverless 架构是一种无需管理服务器、无需预配服务器容量的计算模型,开发者只需关注代码和业务逻辑。同时,Serverless 遵循按量付费的模式,按照实际使用量收费,使用更为灵活。

Serverless 并不是真正的无服务器,而是无需关心服务器的管理工作,并且容器化的自动扩缩容等服务器管理工作被隐藏到服务提供商(如 AWS Lambda、阿里云函数计算、腾讯云函数等)的后台,为用户提供一个灵活强大的计算环境。

Serverless 图片处理的优势

使用 Serverless 架构实现图像处理服务相比传统方式有以下优势:

  • 高效处理:传统的图片处理服务通常会占用服务器的大量资源,导致网页响应缓慢,甚至直接崩溃。使用 Serverless 图片处理服务,这些操作放在了服务提供商的后台处理,不占用服务器资源,提高了性能。
  • 成本节省:Serverless 图片处理服务可以根据实际需求进行弹性扩展,不需要维护额外的服务器。同时,按需付费的模式可以保证成本控制。
  • 可定制化:Serverless 图片处理服务可以根据实际业务需求进行高度定制化,灵活度更高。

如何实现 Serverless 图片处理?

Serverless 图片处理的流程如下:

  1. 前端将图片上传到云服务(如阿里云 OSS)。
  2. 云服务将上传的图片信息发送给 Serverless 服务。
  3. Serverless 服务对图片进行处理,并将结果返回给云服务。
  4. 云服务将处理后的图片返回给前端展示。

下面我们以阿里云函数计算和 OSS 为例,介绍如何实现 Serverless 图片处理服务。

创建函数计算服务 (Aliyun Function Compute)

首先,我们需要创建函数计算服务。在创建过程中,需要注意以下两点:

  1. 选择运行环境为 Node.js,安装依赖包 sharp(npm install sharp),这是一个 Node.js 图像处理库。
  2. 添加阿里云 RAM 角色,授权访问 Aliyun-OSS 的权限。

函数计算处理过程

上传文件至阿里云 OSS 后,阿里云 OSS 会自动触发函数计算服务。函数计算服务将使用 sharp 库进行图片处理,并将处理后的图片返回给 OSS。

以下是示例代码:

----- ----- - -----------------
----- --- - -------------------

----- ------ - --- -----
  ------- ----------------
  ------------ ---------------------
  ---------------- -------------------------
  ------- ----------------
---

--------------- - ----- ------- -------- --------- -- -
  ------------------ --------

  --- --------- - -------------------------------

  -----------------------

  --- ------ - ----- ----------------------

  --- ----------- - ---------------

  --- ------------ - ----- ------------------
    --------- ------ --- --
    ------------

  ----- -------------------- - --------------- --------------

  --------------------

  -------------- --------
--

上述代码中,sharp 库的使用非常方便,resize() 方法用来进行图片缩放。

配置阿里云 OSS 触发器

创建好函数计算服务之后,我们需要将阿里云 OSS 中的文件上传事件与函数计算服务进行绑定。

在控制台中,进入阿里云 OSS 的存储空间 -> 触发器管理,添加触发器。其中,Events 选择 object-created,并填写函数计算服务的名称和版本。

在前端中使用 Serverless 图片处理服务

在前端中使用 Serverless 图片处理服务非常简单,只需要将图片上传至阿里云 OSS,然后从阿里云 OSS 获取处理后的图片即可。

以下是前端中如何上传图片至阿里云 OSS 的示例代码:

------
  ------
    ------ ----------- ----------- --------- ------------------------- --
    ---- ---------- ------ --
    ------- --------------------------------------------------------------------
    --------
      ----- ------ - --- -----
        ------- ----------------
        ------------ ---------------------
        ---------------- -------------------------
        ------- ----------------
      ---

      ----- -------- -------------- -
        --- ---- - -----------------------------------------

        --- ------ - ----- --------------------- ------

        --------------------

        --- -------- - ----- ----------------------------- - ----------------

        ------------------------------------ - ---------
      -
    ---------
  -------
-------

上述代码中,上传成功后会自动生成一个后缀为 resized 的处理后的文件。

总结

通过本文的介绍,我们可以看出 Serverless 图片处理的优势以及如何使用阿里云函数计算和 OSS 实现 Serverless 图片处理。Serverless 架构将会越来越受到开发者的欢迎,特别是对于前端开发者,使用 Serverless 架构可以快速实现各种功能,提高开发效率。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/664634d6d3423812e444dcc3


猜你喜欢

  • 基于 ARIA 的无障碍技术

    ARIA(Accessible Rich Internet Applications)是一种语义化标准,能够帮助开发者更好地构建无障碍 Web 应用。通过为 HTML 元素添加 role 和 aria...

    5 个月前
  • Socket.io 如何处理服务器与客户端的断开连接?

    随着 Web 技术的发展,Web 应用程序变得越来越复杂,而且需要实时通信,这时 Socket.io 库就出现了。Socket.io 是一个 JavaScript 库,它可以使得 Web 应用程序实现...

    5 个月前
  • 使用 Mocha 测试 Express 应用的正确打开方式

    Express 是 Node.js 中最受欢迎的 Web 框架之一,而 Mocha 则是 Node.js 中最流行的测试框架之一。在前端开发中,测试是非常重要的一部分,它可以帮助我们减少错误、提高代码...

    5 个月前
  • 用 Custom Elements 构建灵活可重用的 Web 组件

    用 Custom Elements 构建灵活可重用的 Web 组件 现如今,Web 应用程序越来越复杂和迅速发展。在这个大环境中,Web 版本的组件化和模块化变得越来越重要和流行。

    5 个月前
  • Angular 6 教程:解决表达式非法字符问题

    问题描述 在使用 Angular 6 进行开发时,常常会遇到表达式中存在非法字符的问题。这些非法字符可能是中文、特殊符号等,会导致代码无法正确解析,从而引发程序出错。本文将为大家介绍如何解决这个问题。

    5 个月前
  • Koa 应用的 HTTPS 部署及应对方案

    随着互联网的普及和网络安全问题的不断突出,HTTPS 协议已经成为了现代化网络应用必备的协议之一。在前端开发中,我们通常使用 Koa 框架来搭建我们的应用,那么该如何对 Koa 应用进行 HTTPS ...

    5 个月前
  • Mongoose 中的 Model.find():理解回调函数

    在 Node.js 中,Mongoose 是一个优秀的 MongoDB ODM 库,它可以帮助我们更方便地操作 MongoDB 数据库。Model.find() 是 Mongoose 中常用的一个方法...

    5 个月前
  • 如何在 Chai 中进行 Mock 测试

    Mock 测试是指在进行软件测试时,通过代码模拟目标对象的行为,从而能够更加方便地进行测试。在前端开发中,我们经常会遇到需要进行 Mock 测试的情况,例如 API 请求结果、依赖外部库等等。

    5 个月前
  • Hapi 中如何处理 URL 参数

    Hapi 是一款现代化的 Node.js Web 应用程序框架,它的流程控制非常简单,同时也非常强大。在 Hapi 中,URL 参数的处理是非常简单的,这篇文章我们将详细介绍在 Hapi 中如何处理 ...

    5 个月前
  • Redux-thunk 和 Redux-saga 的优缺点分析

    Redux-thunk 和 Redux-saga 是 Redux 中常用的两种中间件,它们的主要作用是在 Redux 中处理异步操作。本文将会从使用、优缺点以及适用场景等角度对 Redux-thunk...

    5 个月前
  • Deno 中如何使用 ORM 对数据库进行访问

    在现代 Web 应用程序开发中,ORM(Object-Relational Mapping)是一个非常流行的工具。ORM 可以让开发者使用面向对象的方式操作数据库,从而避免了手写 SQL 的复杂性和重...

    5 个月前
  • build 的时候遇到的 bug 及解决方式

    在前端开发中,我们常常需要进行打包和构建项目。然而,有时在 build 的过程中会遇到各种各样的问题,这些问题会影响项目的正常运行。本文将针对一些常见的 build 时的 Bug 进行详细分析,并提供...

    5 个月前
  • Babel 编译 es6 的 babel-preset-es2015 的使用问题解决

    如果你正在学习或者使用前端开发,那么你应该已经知道了 ES6(ECMAScript 6)的重要性。然而,由于目前许多浏览器还未支持 ES6,并不是所有的浏览器都能够正确地解析 ES6 代码。

    5 个月前
  • ES9 中扁平化数组的两个关键字

    扁平化数组是前端中常用的操作,其主要功能是将多维嵌套的数组转化为一维数组。在ES9中,有两个关键字可以帮助我们更容易地实现数组扁平化操作:flat()和flatMap()。

    5 个月前
  • Babel 转义箭头函数时出现 “arrow function” 的错误解决方案

    在前端开发中使用箭头函数已经变得非常普遍,然而在使用 Babel 转译箭头函数时,有时会出现“arrow function”的错误。本文将介绍如何解决这个问题。 问题描述 当使用 babel 转译箭头...

    5 个月前
  • React 单元测试:安利一下 Enzyme

    React 单元测试:安利一下 Enzyme React 已经成为了现代前端开发的主流技术之一,但要充分利用它的好处还需要对 React 组件进行单元测试。对于初学者来说,这显然是一项挑战,但是这篇文...

    5 个月前
  • Angular 5 教程:解决键盘事件处理程序错误

    在前端开发中,处理键盘事件是非常普遍的需求。而在使用 Angular 5 进行开发时,处理键盘事件也是很常见的操作。但有时候我们可能会遇到一些问题,比如键盘事件处理程序不起作用或者出现错误。

    5 个月前
  • sequelize 生成表时 TypeError: Cannot set property 'primaryKey' of undefined

    在 Node.js 中,Sequelize 是一个常用的 ORM(Object-Relational Mapping,对象关系映射) 框架。当我们使用 Sequelize 构建应用程序时,遇到表生成失...

    5 个月前
  • Java 性能优化:从 JVM 角度出发

    Java 是一种广泛使用的编程语言,在 Web 开发、移动应用等领域都有广泛的应用。随着应用程序规模的不断扩大和复杂度的增加,Java 应用程序的性能优化变得越来越重要。

    5 个月前
  • ES10:Array.flat()、Array.flatMap() 及其他一个实用的新数组函数

    ES10:Array.flat()、Array.flatMap() 及其他一个实用的新数组函数 ES10 提供了一些新的数组函数,这些函数可以使我们更方便地处理数组。

    5 个月前

相关推荐

    暂无文章