前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用 FaaS 实现比优图更灵活的大量图片快速加工能力

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

原创
作者头像
黄希彤
发布2018-01-02 18:04:13
1.4K1
发布2018-01-02 18:04:13
举报
文章被收录于专栏:黄希彤的专栏黄希彤的专栏

背景

前几天有个朋友的一个公益策划不小心泄漏后,实在在太火,在朋友圈刷屏了,导致后台服务器的处理能力成为瓶颈,不得不临时扩容了数十台服务器来处理大量的图片。和他们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 代码,就可以开始爽起来了!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 如何做
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档