Simple Image Tool 0.0.1

less than 1 minute read

今天我们一起来看看如何搭建一个图床

动机

在写博客的时候经常需要插入图片,公众号本身支持图片上传,但个人博客就需要找第三方服务了。

以前一直使用iPic,它默认会把图片上传到新浪服务器,也支持S3,七牛等云服务,但必须注册,貌似要收费。

同时有一些图片是自己花费很大精力画出来的,直接上传到第三方服务器总觉得不爽。所以就萌生了自己建图床的念头。

思路

网上有很多怎么建图床的文章,基本有三个需求需要实现

  1. 图片存储
  2. CDN
  3. 图片大小控制

图片存储和CDN比较好理解,我们需要把图片可靠的保存起来且能够被快速获取。 AWS已经提供了很完善的功能,只需要将S3和Cloudfront一起使用就可以了,如果想要自己的域名,可以在Route53中添加一个CNAME, 这里就不赘述了。

图片大小控制可以从两个方面看

  1. 对于前端展示来说,不同的设备分辨率不同,需要的图片大小也不同,为了给读者最好的阅读体验,最好能够根据不同设备提供不同尺寸的图片。
  2. 对于后端存储来说,原样存储图片会导致存储空间急剧增加,花的钱越来越多。而有些图片根本不需要那么高的分辨率。在图片上传时控制图片尺寸可以有效的降低花费。

对于第一个方面,需要服务器提供强大的功能来进行图片的剪切处理,而且必须存储原始图片,对于个人来说花费太高,也没有太多这方面的需求,这里就不考虑了。

这里我们重点考虑第二个方面,如何在上传图片时控制图片尺寸。

其实原理很简单,我们只需要在上传时给定图片的最大尺寸,如果大于这个尺寸就对图片按比例缩小就可以了。

这里我给了四种尺寸选择

  • 480p - 720 * 480
  • 720p - 1280 * 720
  • 1080p - 1920 * 1080
  • 原始尺寸

在很多情况下我们希望上传的是截图,如果把截图保存成文件再上传就显得很麻烦,所以这里我特别支持了直接将剪贴板中的图片上传。

支持剪贴板上传会有命名的问题,上传后的文件应该叫什么名字呢?其实大多数情况下我们是不关心图床里图片的名字的,我们只是需要一个图片链接,然后可能永远不会再管这个文件了。 所以所有上传的文件我都会生成一个UUID作为名字.

虽然说我们很大概率不会再管这个文件,但偶尔能够浏览一下图床里的所有图片还是很好的,所以这里我也添加了图片浏览的功能。

效果图

安装

pip install simple-image-tool

帮助命令

上传已有图片

上传剪贴板图片

浏览所有图片

Updated:

Comments