本帖最后由 lixiaofei 于 2021-11-27 15:22 编辑
刚才看到论坛里有人问chevereto能不能和oss/cos一样用?width=&height=传参获得不同大小,虽然我不知道chevereto是不是支持,但是我原来用过一个imgproxy可以实现这样的效果。 在上传了一张图片以后,在不同的页面下,会要求显示不同的分辨率。常见的在图片列表页面显示的64*64的小缩略图,在瀑布流模式下显示的中型尺寸图片,以及原图模式下显示的完全尺寸的原图。除此之外,我们也可能会想对图片进行压缩来节省流量,比如上传的png图片,但是显示的时候来显示jpeg图片来加快用户的访问速度。针对这些需求,我用的是imgproxy这个图片代理软件,官方网站是https://imgproxy.net/。 通过名字就知道,这是一个图片代理服务,简单的来说,这个软件会反代真正的图片地址,当请求图片的时候,请求的是imgproxy的图片地址,然后imgproxy再去请求原始图片,将其转换为要求的尺寸和格式以后,再发送给用户。除了这些以外,imgproxy还可以对原始图片进行模糊化、旋转、亮度调节、加水印等很多功能,具体可以去看官方的文档说明。 官方也给了一个其工作的原理图。从下图中可以看出,可以在imgproxy前面再配一层CDN来缓存已经处理好的图片。 话不多说,下面开始教程,有需要的小伙伴可以跟着部署一下。 购买服务器 如果没有服务器的话,需要先购买一台腾讯云的轻量服务器。 轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、小程序/小游戏、电商、云盘/图床以及各类开发测试和学习环境,相比普通云服务器更加简单易用,提供高带宽流量包并以套餐形式整体售卖基础云资源,将热门开源软件融合打包实现一键构建应用,是您使用腾讯云的最佳入门途径。为了方便安装应用,我们需要准备Docker环境。 腾讯云经常举办各种活动,可以进入他们的活动页面进行购买,可以选择距离最近的区域购买,不过不想北岸的话,可以选择境外的服务器(比如香港区域)进行购买。镜像的话,选择【官方镜像】下的【docker基础镜像】,实例套餐选择适合自己的,然后提交订单,付款即可。如果不选择【Docker基础镜像】,后面需要自行安装docker容器。 安装imgproxy imgproxy的安装十分简单,简单的只需要一行命令就可以搞定
复制代码 上面命令运行结束以后,imgproxy就已经运行起来了。我们可以测试一下效果 首先打开 http://ip:8081,可以看到下面的页面 说明imgproxy已经正常启动了。我们尝试让其代理一下nasa的这张2000*1125的这张大图来测试一下效果 原图
复制代码 将其转换为 400*400的图片
复制代码 其中 xxxxxx 代表签名字符串,默认启动的docker容器没有开启签名功能,因此这个签名参数可以任意填写,我这里填写的xxxxx。 效果 将其转换为200*200的图片,并旋转90度
复制代码 效果
复制代码 配置imgproxy 可以通过环境变量来配置imgproxy,改变其工作模式。下面说一下我用的几个参数。其余更多的配置项可以参考官方文档https://docs.imgproxy.net/configuration
复制代码 综上,启动imgproxy的命令可以是
复制代码 上面讲的内容可以满足一般用户的需要,除此之外,imgproxy还支持更高级的防滥用机制,那就是签名参数。不过这个方法需要自己在后台生成签名的url,不能在前端直接拼接,因此我暂时没有用到,有兴趣的小伙伴可以研究一下 最后 imgproxy的功能是十分强大的。当然如果小伙伴觉得使用起来很麻烦的话,可以直接试试腾讯云的COS,使用起来更加简单容易。
|
好一个技术贴 帮顶 |
@solomon314 看一下是否符合你的要求 |
不明觉厉,帮顶收藏吃灰一气呵成 |
好的 感谢,方便的话还是oss/cos方便的,自建的话麻烦一点。 |
收藏一下,没准以后能用上 |
这么快就沉了 |
太复杂了,用zimg docker部署就行,各种大图,小图等 |
cpu要求高吗? |
这个也是docker部署的,一行命令就行了。而且本身不存储图片,是处理远程图片的,可以和别的图床配合使用 |