对象存储COS数据处理-灵活使用图片参数
随着5G等技术的普及,信息的传播越发的快速,更好的满足了民众对于信息的诉求。越来越多的产品提供了丰富的信息资源,包括图片、视频、音频等等。如何存储和处理这些数据是一个产品需要考虑的重要方面,如果由产品团队自己来进行图片、音视频和文档数据的存储和处理,需要投入硬件采购、软件系统部署和维护成本,同时也需要专业的技术团队。
腾讯云对象存储COS数据处理能力更好地为产品团队提供专业稳定的云端处理能力,基于数据万象CI的云端数据处理能力具有规模大、专业性强等特点,同时也经过内外部产品大规模的检验。
数据处理流程
能力简介
COS数据处理之图片处理是腾讯云为客户提供的一体化的图片解决方案,覆盖上传、下载和识别功能,其中上传和下载时支持丰富的图像处理功能,如裁剪、压缩、水印和转格式等,满足各种业务场景需求,给用户提供了安全、稳定、高效的云端数据处理能力,满足用户的多种需求。
基础图片处理
基础图片处理能力使用为简单,只需要拼接URL参数就可以,具体见API文档
代码语言:txt复制https://cloud.tencent.com/document/product/460/6924
基础图片处理-旋转
通过imageMogr2参数提供旋转功能,可以支持旋转固定角度和自适应旋转。自适应旋转是指根据原图EXIF信息将图片自动回正。
代码语言:txt复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo.jpg?imageMogr2/rotate/30
1、旋转30度:
2、auto-orient旋转:
auto-orient旋转(读取EXIF的信息并且自动旋转输出图片):
代码语言:txt复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo_270.jpg
默认显示:
代码语言:javascript复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo_270.jpg?imageMogr2/auto-orient
auto-orient显示:
基础图片处理-缩放
通过imageMogr2参数提供了缩放功能,可以支持多种限制方式的缩放,同时针对需要填充时可以支持按照颜色进行填充。
1、宽高同时缩放30%
代码语言:txt复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo.jpg?imageMogr2/thumbnail/!30p
2、缩放并且填充颜色
代码语言:txt复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo.jpg?imageMogr2/thumbnail/300x200/pad/1/color/IzNEM0QzRA
基础图片处理-格式转换
通过imageMogr2参数可以实现丰富的格式转换功能,主流的jpg,bmp,gif,png,webp和heif都可以支持。方便用户使用。
1、png格式
代码语言:txt复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo.jpg?imageMogr2/format/png
2、webp格式
代码语言:txt复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo.jpg?imageMogr2/format/webp
3、heif格式
代码语言:txt复制https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo.jpg?imageMogr2/format/heif
heif格式很多暂时不支持,先不预览图片。
基础图片处理-格式对比
COS对象存储也为jpg图片类型提供guetzli压缩功能,该功能也可以达到60 %的图片压缩能力。欢迎各位使用COS的数据处理能力体验馆,寻找你需要的能力
代码语言:txt复制https://cloud.tencent.com/act/pro/cosExhibition
jpg启用guetzli压缩
jpg转为webp格式,可以达到30 %的质量减少。
jpg转为heif格式,可以达到50 %的质量减少。
基础图片处理-灵活使用图片格式转换参数
针对如此多的图片格式,如何更好的使用这些图片格式让客户业务获得更好的业务体验。如下推荐参数中,大家发现多了ignore-error和auto-orient两个参数key,这两个参数key可以更好的规避一些超大图或者图信息缺少导致的转换失败,可以优先返回原图。注意,COS服务是无法感知到客户的使用环境,所以想要准确的使用各种格式,客户需要在客户主动判断使用环境选择最优的格式,使得客户业务更快的图片加载体验。
1、对于一些新的移动系统使用IOS 11以上及 Android P 系统预览,我们可以优先让客户业务使用heif格式。
代码语言:txt复制imageMogr2/auto-orient/ignore-error/1|imageMogr2/format/heif
2、对于常用的系统或者环境,可以使用让客户业务使用webp格式。
代码语言:txt复制imageMogr2/auto-orient/ignore-error/1|imageMogr2/format/webp
3、对于一些低系统或者需要兼容性高,可以使用让客户使用guetzli压缩
代码语言:txt复制imageMogr2/auto-orient/ignore-error/1|imageMogr2/format/guetzli
4、对于使用CDN的大量客户,我们也可以通过和CDN的集成的方式为客户提供格式的支持。
4.1、Webp自适应能力
HTTP 请求头中 accept 头部包含 image/webp。
图片后缀为 jpg、jpeg、bmp、gif、png。
4.2、Guetzli自适应能力
HTTP 请求头中 accept 头部包含 image/guetzli。
图片后缀为 jpg、jpeg。
基础图片处理-水印能力
通过watermark参数提供了多种水印能力,包括图片水印,文字水印,方便用户使用。
代码语言:txt复制https://cloud.tencent.com/act/pro/cosExhibition
基础图片处理-水印能力扩展
2020年作为在线教育和在线办公元年,催生了很多关于版权保护的需要,各大公司和学校内部数据都需要保护能力,这时候图片的水印能力就可以做到一些防护。但是客户可能会疑问通过图片链接就可以获得到图片原图,是否能真正的保护,针对这种情况我们提供了一种参数加密的能力,这样用户就完全不知道图片的原始链接。如您想使用该功能,可提交工单或点击右侧联系我们,以开启参数加密。您只需提供需要加密的bucket名称,并根 据下文中的加密算法对您的请求链接进行加密开发。
1、文字水印
2、加密方式:
代码语言:txt复制1、加密算法:AES
2、加密模式:cbc
3、加密key:自定(双方一致,需使用16位字符串)
4、加密vi:自定(双方一致,需使用16位字符串)
5、加密流程
6、按照“ci-process=?<compress_param>”格式拼接请求串,对请求串使用AES的CBC模式加密,然后对加密后的二进 制内容再进行urlsafe的base64编码,最终使用“域名/<urlsafe_base64encode(encrypt)>”进行访问
注:
fileid:资源名称 compress_param:处理参数,如?imageMogr2/format/webp
3、示例:
代码语言:txt复制1、原始URL:
https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/demo.jpg?watermark/2/text/Q09T5pWw5o2u5aSE55CG/fill/IzNEM0QzRA/fontsize/20/dissolve/50/dx/20/dy/20/batch/1/degree/45
2、加密key: TIwODEwMDEucGljc 加密vi: NTIwODEwMDEu2RzL
3、待加密串:
ci-process=demo.jpg?watermark/2/text/Q09T5pWw5o2u5aSE55CG/fill/IzNEM0QzRA/fontsize/20/dissolve/50/dx/20/dy/20/batch/1/degree/45
4、加密并urlsafe_base64encode后:
Sz2-8N_7VlMBCynB_Rv48QZW3blBRI-cCNJcp2H1rm4Oji-soJhk4xYirO8w0dJwRWyJh_vswJQ1UoyoheqvnoklGmdu_7UxTpX0jlihybRDY9GKDLWroNr7Ch-zc0BxE-1kxIbwoReBu558D_BRmn-K_b-Q3HH69fyL6HVwIks=
5、https://demo-1253960454.cos.ap-chongqing.myzijiebao.com/Sz2-8N_7VlMBCynB_Rv48QZW3blBRI-cCNJcp2H1rm4Oji-soJhk4xYirO8w0dJwRWyJh_vswJQ1UoyoheqvnoklGmdu_7UxTpX0jlihybRDY9GKDLWroNr7Ch-zc0BxE-1kxIbwoReBu558D_BRmn-K_b-Q3HH69fyL6HVwIks=?imageMogr2/auto-orient
注意:
如果bucket为私有读写,需要对加密后的串(当做虚拟文件)做签名,否则无法通过COS的签名验证。
?imageMogr2/auto-orient参数用于标识该请求是图片类的请求。