全栈直通车-王世彪的博客
关注公众号
  • 开发桌面程序
  • javascript教程
  • css样式
  • vuejs
  • 部署免费CDN
  • SEO搜索引擎优化
  • vuepress教程
  • redis分布式缓存
  • Golang
  • PHP
  • Python
  • Java
  • NodeJs
  • tomcat
  • ELK
  • Mysql数据库
  • Nosql数据库
  • C/C++底层开发
  • 音视频/流媒体
  • linux服务器
  • nginx服务器
  • 容器技术
  • 负载均衡
  • 项目管理
  • 持续集成
  • 大数据
  • 微信公众号运营
  • markdown用法
赞一个
友链
联系作者

王世彪

努力做个影响他人滴人
关注公众号
  • 开发桌面程序
  • javascript教程
  • css样式
  • vuejs
  • 部署免费CDN
  • SEO搜索引擎优化
  • vuepress教程
  • redis分布式缓存
  • Golang
  • PHP
  • Python
  • Java
  • NodeJs
  • tomcat
  • ELK
  • Mysql数据库
  • Nosql数据库
  • C/C++底层开发
  • 音视频/流媒体
  • linux服务器
  • nginx服务器
  • 容器技术
  • 负载均衡
  • 项目管理
  • 持续集成
  • 大数据
  • 微信公众号运营
  • markdown用法
赞一个
友链
联系作者
  • git

    • git pull指定项目路径
    • git管理远程主机
    • svn仓库迁移到git仓库
    • git提交规范
    • git回退版本
    • git配置用户信息
    • git stash暂存当前改动
    • centos升级git版本
    • macos美化git终端
    • git统计2个分支落后或提前的提交次数
    • git查看日志
    • git项目开发流程
    • git其它
  • svn

  • chrome插件

  • 画图工具

  • 阿里云oss图片压缩
    • 一. 阿里云的oss图片的几种压缩模式
    • 二. 总结
    • 腾讯云的图片压缩
  • 其它
王世彪
2021-10-28

阿里云oss图片压缩

# 阿里云oss图片压缩

本文讲述阿里云oss上存储的文件如何在URL上添加特定的处理参数实现图片的压缩,以减少带宽,从而减少成本支出。除了压缩,还支持其他的图片处理操作,详见官网。

# 一. 阿里云的oss图片的几种压缩模式

官网:https://help.aliyun.com/document_detail/44688.html
压缩参数中的w和h限定了一个矩形区域。
提供了如下几种压缩模式:

  1. lfit
    在矩形区域内的最大图片(区域内会有局部地方没被填充),且等比缩放。 可得出:因为是等比缩放,所以最终生成的图片的分辨率和压缩参数的w、h并不完全相等。
  2. mfit
    在矩形区域外的最小图片(图片会伸到矩形区域外),且等比缩放。 可得出:因为是等比缩放,所以最终生成的图片的分辨率和压缩参数的w、h并不完全相等。
  3. fill
    在mfit模式的基础上,将伸出的图片内容以对称的方式砍掉。 可得出:图片的内容为等比缩放。但是最终生成的图片的分辨率和原图的分辨率并非等比例。
  4. pad
    在lfit模式的基础上,移动图片到对称位置,然后多余部分用白色填充,使得最终的图片充满整个矩形区域。 可得出:图片的内容为等比缩放。但是最终生成的图片的分辨率和原图的分辨率并非等比例。
  5. fixed
    通过缩放,让图片大小与矩形区域完全吻合。 可得出:该模式下,生成的图片会变形。

阿里云提供了样式的概念,相当于给一组压缩参数定义一个别名,方便记忆。具体详见官网 (opens new window)。

# 二. 总结

  1. 图片变形 lfit、mfit、fill、pad都不会发生变形。 fixed会发生变形。

  2. 图片完整性 lfit、mfit、pad、fixed:图片是完整的 fill: 图片会被裁剪

  3. 推荐的模式 因为fixed会引起变形、fill会使得图片不完整。所以推荐如下模式:lfit、mfit、pad

  4. 通过压缩参数处理后,分辨率只会变小而不会变大 通过实际测试得出的结论,官网并没有提及。 比如源图片为100100,压缩参数为w_200、h_200,生成的图片仍旧是100100。

# 腾讯云的图片压缩

腾讯云也提供了类似的图片压缩,功能p类似,只是参数规则的命名不同而已。

# 公有桶

阿里云和腾讯云定义规则的对比如下(以公有桶为例):

阿里云 腾讯云
?x-oss-process=image/resize,m_lfit,h_132,w_132 ?imageMogr2/thumbnail/132x132
?x-oss-process=image/interlace,1/resize,m_lfit,w_1920,h_1920/format,webp ?imageMogr2/thumbnail/1920x1920/format/webp
?x-oss-process=image/interlace,1/resize,m_lfit,w_320,h_180/quality,q_90 ?imageMogr2/interlace/1/thumbnail/320x180/quality/90

# 私有桶

公有桶下的图片压缩参数直接拼接到现有的图片url后面,作为参数即可。但是对于私有桶,需要将图片压缩参数作为签名的一部分,具体详见官网。
示例代码如下:

	opt := &cos.PresignedURLOptions{
		Query:  &url.Values{},
		Header: &http.Header{},
	}
	opt.Query.Add("imageMogr2/thumbnail/132x132", "")
	presignedURL, err := client.Object.GetPresignedURL(context.TODO(), http.MethodGet, filePath, secretId, secretKey, time.Hour*6, opt)

# 样式

腾讯云也提供了阿里云样式的功能,详见官网 (opens new window)

#oss
上次更新: 2022-01-11 10:48:39
使用UML画图

← 使用UML画图

最近更新
01
mysql创建用户
04-09
02
golang错误处理最佳实践
03-17
03
基于proto文件生成rpc接口定义文档
03-11
更多文章>
Theme by Vdoing | Copyright © 2019-2022 王世彪 | MIT License
冀ICP备19016776号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式