首先放个阿里云OSS图片处理接口文档 阿里云官方地址
OSS 图片处理接口文档
我们有时会抱怨用户上传的图文中图片文件大了(假如说3M的图片)。导致生成的网页打开速度慢,怎么办呢?
问题分析:网页打开慢是因为网页资源下载的那张图片下载慢。只要能够改变用户上传的大小就能解决这个问题。
方案一: 限制用户上传文件的大小?
1、使用的用户并不懂程序,限制了大小用户是否会觉得体验感不好?
方案二:图片上传后我们是否能对图片进行处理使之改变该图片的大小(压缩)?
1、我们写的程序处理图片的接口就一定很好吗?
2、我们有那么多精力去做这个吗?
3、我们能否在网上查询相应的资源下载对应的图片处理接口包来使用?安装使用的流程复杂吗?
4、能否在现有的资源下找个免费的第三方平台免费帮助我们?
然后我根据自己的情况我选择了上述的方案二 - 4 这个方法
采用OSS自带的图片处理机制来帮助我们。
我只说一下我的使用心得。
我的需求只是压缩用户上传上来的图片文件大小
假设我的OSS域名是
http://demo.oss-cn-xxxxx.aliyuncs.com
在该demo bucket下我上传了一张图片 test.jpg 文件大小是3M
假设http能访问到的地址 http://demo.oss-cn-xxxxx.aliyuncs.com/test.jpg
现在我想更改这个图片文件的大小。怎么办?
1、更改图片清晰度
2、缩小图片尺寸
我能想起的就是这两个方法
但是根据我的需求不能更改缩小图片的尺寸,那么只能是更改图片的清晰度了。
http://demo.oss-cn-xxxxx.aliyuncs.com/test.jpg?x-oss-process=image/quality,q_60
原图清晰度的60%
http://demo.oss-cn-xxxxx.aliyuncs.com/test.jpg?x-oss-process=image/quality,q_80
原图清晰度的80%
看到了吧?
queryString : x-oss-process=image/quality,q_{int} 这个就是更改图片清晰度的结尾参数 {int}取值0~100
当然我们还可以对图片进行多次处理
裁剪
http://demo.oss-cn-xxxxx.aliyuncs.com/test.jpg?x-oss-process=image/circle,r_100
先压缩再裁剪
http://demo.oss-cn-xxxxx.aliyuncs.com/test.jpg?x-oss-process=image/quality,q_80/circle,r_100
是不是很方便,不需要我们自己去写代码,只要我们自己在参数后面加入对应的参数就行了。
当然如果你有自己的阿里云域名(通过域名映射指向的阿里云域名的,如demo.xxxxx.com 指向阿里云的demo.oss-cn-xxxxx.aliyuncs.com) 怎么去实现上述的功能呢?
一样的,什么都不需要变化。直接点:
http://demo.xxxxx.com/test.jpg?x-oss-process=image/circle,r_100
http://demo.xxxxx.com/test.jpg?x-oss-process=image/quality,q_80/circle,r_100
如果demo.xxxx.com 做了CDN 加速 也一样用。虽然这个没测试过 但是网上其它老师都是这么说的。
如果你的域名是https 协议访问的,你也可以试一下我上述的方法,我也没测试过https协议的访问情况,如果测试了的小伙伴方便在下方留个言说下测试结果么?方便后面的小伙伴们查看测试结果,节约时间。