用 FaaS 实现比优图更灵活的大量图片快速加工能力

背景

前几天有个朋友的一个公益策划不小心泄漏后,实在在太火,在朋友圈刷屏了,导致后台服务器的处理能力成为瓶颈,不得不临时扩容了数十台服务器来处理大量的图片。和他们CTO聊了一下,原来为了保证被分享到朋友圈的每个捐款图片都独立可追踪,他们采用了临时合成带有动态二维码和用户昵称的朋友圈分享图片。这样每当有一个人分享到朋友圈的时候,服务器就要临时计算一个二维码并且把它叠加到一张已有的图片上面,因此服务器成为了性能瓶颈。

其实像这样的大量图片的规则化加工,最好是由优图这样的海量图片处理平台来服务,但是叠加动态二维码这个需求太特殊了,之前并没有人提出来过,所以优图目前只能做到把一张已有的图片作为水印叠加到另一张图片里面去,还做不到动态的生成二维码并立刻叠图。

在云时代,发现一个这样的市场需求,正确的打开姿势肯定不是去找优图团队提需求,等下一次版本迭代,而是通过腾讯云函数的能力自己写非常少的几行代码,实现一个比优图更加个性化的,同时和优图一样具有强大的批量处理能力的服务。

如何做

1. 为了偷懒,我们直接进入腾讯云实验室 https://cloud.tencent.com/developer/labs/lab/10172 开始一个新实验。

2. 在“在虚拟环境下安装 Pillow 和 COS SDK”这一步,多执行一个安装qr支持包的操作

pip install qrcode

3. 在thumbnail.py文件中,在最前面加一行

import qrcode

并把图片处理函数 resize_image 略作修改,插入空行分割的几行(如果不需要压缩图片 image.thumbnail 那一行也可以删掉)

def resize_image(image_path, resized_path):
    with Image.open(image_path) as image:
    
        image.thumbnail(tuple(x / 2 for x in image.size))
        qrimage = qrcode.make('Some data here')
        box = (1,1,289,289)
        region = qrimage.crop(box)
        image.paste(region,box)
        
        image.save(resized_path)

4. 其他操作原封不动按照实验室的指引操作,完成实验

好了,现在我们得到了一个可以往自己的图片上动态叠加自己的二维码生成一个新图片的云函数。

示例效果

除了实验室已经做好的全部程序,一共只需要敲 6 行 shell 和 python 代码,就可以开始爽起来了!

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

1 条评论
登录 后参与评论

相关文章

来自专栏互联网开发者交流社区

SEO-发信息注意的问题

1143
来自专栏云加新鲜事儿

如何在腾讯云上搭建一个PPT自动播放的服务器

本文主要讲述了如何在腾讯云上搭建一个PPT自动播放的服务器,产品的效果是你可以借助任何一个远程终端来讲解你的 PPT (一个手机、麦克风等),该系统会根据你讲解...

4520
来自专栏web开发

Node.js包管理器Yarn的入门介绍与安装

FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在前不久, Facebook 发布了新的 node.js ...

1776
来自专栏Crossin的编程教室

3分钟破译朋友圈测试小游戏

最近,朋友圈时不时会流行起某个测试类小游戏,比如你的性格图谱啦,你是三体中的哪个角色啦,你有什么超能力啦……昨天晚上在某个群里,又被一个测测你是什么书的小游戏刷...

3897
来自专栏Python攻城狮

Python采集微博热评进行情感分析祝你狗年脱单

如果自己需要爬(cai)虫(ji)的数据量比较大,为了防止被网站封Ip,可以分时段爬取,另外对于爬到的数据一般是用来存储数据库,这就需要对数据进行去重处理,记录...

672
来自专栏数据小魔方

妈妈再也不用担心我不会配色了

记得之前的推送有两篇专门介绍关于取色的 但是毕竟是操作性的东西 总得动动手才能有感觉 今天就教大家怎么取色 会用到四个小软件及PPT插件 ColorPix(桌...

2977
来自专栏跟着阿笨一起玩NET

C#跟着阿笨玩一起玩异步Task实战(一)

562
来自专栏深度学习那些事儿

win10系统崩溃(unexpected_store_exception)原因以及修复办法

博主使用的windows电脑为: 机械革命(MECHREVO)深海泰坦 X6Ti 多彩版 15.6英寸游戏本i7-6700HQ 8G 128GSSD+1T G...

2364
来自专栏Django中文社区

django 入门学习规划与资料推荐

这篇文章总结了我一年多来的 django 学习经验,推荐一些迅速帮助你入门 django 学习的高质量学习资料和教程,让你在一到两个月内快速掌握基本的 djan...

2767
来自专栏腾讯社交用户体验设计

效率至上—全新微云

1383

扫码关注云+社区