10分钟上线 - API网关 + 函数计算实现图片处理服务
2018-03-13 00:00
756 查看
摘要: 阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统。接下来我们利用 API网关 + FC,来快速实现一个图片转换服务。
点此查看原文:http://click.aliyun.com/m/43686/
阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统。接下来我们利用 API网关 + FC,来快速实现一个图片转换服务。
我们先从最简单的 hello word 开始,函数代码如下:
函数名
event 参数
event 参数是用户调用函数时传入的数据,其类型是
context 参数
context 参数中包含一些函数的运行时信息(例如 request id/临时 AK 等)。其类型是
返回值
函数的返回值会作为调用函数的结果返回给用户,它可以是任意类型:对于简单类型会函数计算会把它转换成 str 返回,对于复杂类型会把它转换成 JSON 字符串返回
更详细的介绍请参考Python 编程指南
结合API 网关,开发者可以方便地将自己的函数以 HTTP 的方式提供给别人使用。关于 API 网关和 FC 的交互协议细节,可参考这篇文章。下图是图片拼接和选择服务的效果和代码示例。当body内容为二进制时,需在函数计算中对body内容进行Base64编码,同时设置isBase64Encoded=true。如果body无需Base64编码,isBase64Encoded可以设置为false。API网关会对isBase64Encoded=true的body内容进行Base64解码后再透出给客户端。
点此查看原文:http://click.aliyun.com/m/43686/
阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统。接下来我们利用 API网关 + FC,来快速实现一个图片转换服务。
我们先从最简单的 hello word 开始,函数代码如下:
def my_handler(event, context): return 'hello world'
函数名
my_handler需要与创建函数时的"Handler"字段相对应:例如创建函数时指定的 Handler 为
main.my_handler,那么函数计算会去加载
main.py中定义的
my_handler函数
event 参数
event 参数是用户调用函数时传入的数据,其类型是
str
context 参数
context 参数中包含一些函数的运行时信息(例如 request id/临时 AK 等)。其类型是
FCContext,具体结构和使用在下面的使用 context介绍
返回值
函数的返回值会作为调用函数的结果返回给用户,它可以是任意类型:对于简单类型会函数计算会把它转换成 str 返回,对于复杂类型会把它转换成 JSON 字符串返回
更详细的介绍请参考Python 编程指南
结合API 网关,开发者可以方便地将自己的函数以 HTTP 的方式提供给别人使用。关于 API 网关和 FC 的交互协议细节,可参考这篇文章。下图是图片拼接和选择服务的效果和代码示例。当body内容为二进制时,需在函数计算中对body内容进行Base64编码,同时设置isBase64Encoded=true。如果body无需Base64编码,isBase64Encoded可以设置为false。API网关会对isBase64Encoded=true的body内容进行Base64解码后再透出给客户端。
import base64 import logging import random import oss2 from wand.image import Image TEMPLATE = open('/code/index.html').read() def my_handler(event, context): logger = logging.getLogger() logger.info('event: %s', event) creds = context.credentials auth = oss2.StsAuth(creds.accessKeyId, creds.accessKeySecret, creds.securityToken) bucket = oss2.Bucket(auth, 'oss-cn-shanghai-internal.aliyuncs.com', 'rockuw-sh-2') fc_obj = bucket.get_object('fc.png') py_obj = bucket.get_object('python.png') with Image(file=fc_obj) as fc_img: with Image(file=py_obj) as py_img: img = Image() img.blank(fc_img.width + py_img.width + 20, py_img.height) img.composite(image=fc_img, left=0, top=0) img.composite(image=py_img, left=fc_img.width+20, top=0) img.rotate(random.randint(0, 360)) img_enc = base64.b64encode(img.make_blob(format='png')) resp = { 'isBase64Encoded': False, 'statusCode': 200, 'body': TEMPLATE.replace('{fc-py}', img_enc) } return resp
相关文章推荐
- 10分钟上线 - API网关 + 函数计算实现图片处理服务
- 10分钟上线 - API网关 + 函数计算实现图片处理服务
- 10分钟上线 - API网关 + 函数计算实现图片处理服务
- 10分钟上线 - API网关 + 函数计算实现图片处理服务
- PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- 阿里云API网关、函数计算、表格存储简单结合使用小结
- 函数计算-触发OSS来处理图片加水印和大小裁剪
- 使用Golang简单实现七牛图片处理API
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- 10分钟上线 - 利用函数计算构建微信小程序的Server端
- php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
- Azure 认知服务 (5) 计算机视觉API - 使用C#代码实现读取图片中的文字(OCR)功能
- 10分钟上线 - 利用函数计算构建微信小程序的Server端
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- 函数计算-触发OSS来处理图片加水印和大小裁剪
- 微信公共服务平台开发(.Net 的实现)8-------处理图片(上传下载发送)
- php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)