前言
随着小程序、移动端应用等应用的广泛普及,对于图像的处理越来越成为前端工程师的一项必备技能。传统的图像处理方式需要在服务端进行处理,造成服务器开销过大,使用不够灵活。Serverless 架构上的图像处理方案,可以在 AWS Lambda 等函数计算服务上进行图像处理,并进行快速和灵活的优化。
本篇文章主要介绍如何在 Serverless 框架中使用 Lambda 函数进行图像压缩。
Lambda 函数
AWS Lambda 是一种事件驱动计算服务,可以在无需操作底层计算资源的情况下运行代码。本文中,我们将使用 AWS Lambda 函数来压缩图像。
图像压缩方法
图像压缩是基于对数据进行变换的原理,将大量的冗余数据剔除,保留图像主体部分信息,达到压缩数据的目的。在图像的压缩方面,主要有以下两种方法:
有损压缩
有损压缩是指压缩图像时会删除一些数据,从而获得更高的压缩比率。在这个过程中,图像的一些细节信息不能完全恢复,导致图像的质量降低,甚至出现色彩的变化和失真等问题。
无损压缩
无损压缩是数据压缩技术的一种,压缩前的数据经过压缩处理后可以完全恢复为压缩前的数据。在这个过程中不会丢失任何数据,因此图像的质量不会降低。
使用 Lambda 函数进行图像压缩
环境搭建
在 AWS 上创建 Lambda 函数之前,需要确保您已经创建了角色,该角色应该包含以下 AWS policy:
- AWSLambdaExecute
- AmazonS3ReadOnlyAccess
这些 policy 允许 Lambda 函数执行和读取 S3 存储桶中的对象。
Lambda 函数代码
在 AWS Lambda 控制台中创建一个新的 Lambda 函数。使用 Node.js 12.x 运行时环境,并添加图像压缩模块 sharp 作为 Lambda 函数的依赖项。
----- --- - ------------------- ----- ----- - ----------------- --------------- - ----- ------- -- - ----- -- - --- --------- ----- --- - ------------------------------- ----- ------ - -------------------------------- ----- ------ - - ------- ------- ---- ---- -- --- - ----- ---- - ----- ------------------------------- ----- --------------- - ----- ---------------- ------------- ---- ------- -------- -- -- ------------ ----- ------------ - - ------- ------- ---- -------------------- ----- ---------------- ------------ ----------------- ---- -------------- -- ----- ------------------------------------- ------ ----- ------------------- - ----- --- - --------------- ------ ------ ----------- ---- ------- ------ ------ - --
使用 Serverless 框架
Serverless 框架可以帮助我们更容易地部署、管理和调试 AWS Lambda 函数。以下是如何在 Serverless 框架上使用 AWS Lambda 函数进行图像压缩的示例代码。
-------- ----------------- --------- ----- --- -------- ---------- ------- --------- ---------- --------- -------- --------------- ------- - --- ------- ----------- ------ -------------------- ------ - ------- ----------- ------------------ - ------- ----- ------- - ------------ - ------------ --------- --------------------------
在 Serverless 框架上使用 AWS Lambda 函数进行图像压缩非常简单,只需在 serverless.yml 文件中进行配置即可。
工作原理
当有一个新的对象被上传至 S3 存储桶中时,S3 会发送事件通知 AWS Lambda 服务。AWS Lambda 通过执行上述 Lambda 函数,使用带有 s3:ObjectCreated:* 的事件触发器来处理压缩后的图像。
首先,AWS Lambda 函数使用 S3 GET 请求从原始存储桶读取图像。然后,该图像经过 sharp 压缩,再使用 S3 PUT 请求将压缩图像存储在另一个存储桶中。
结论
使用 Serverless 架构上的 AWS Lambda 函数进行图像压缩是一种进行前端开发的有效方法。在这种模式下,可以通过 AWS Lambda 函数为图像进行快速和灵活的优化,从而提高应用性能并减少开销。
希望本篇文章对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67198748ad1e889fe2316918