Skip to content

图仓是一款以图片上传、图片分发、图片管理为核心的图床/图片管理平台,能够满足「收藏、整理、查找」的各种场景,把琐碎复杂的事情变得简单与高效,让收集素材成为⽇常习惯,更让素材真正到想用的时候可以信手拈来!是设计师和摄影爱好者必不可少的工具!

Notifications You must be signed in to change notification settings

qingchen1998/tucang.cc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

交流与反馈

https://support.qq.com/products/315563

项目简介

图仓是一款以图片上传、图片分发、图片管理为核心的图床/图片管理平台,能够满足「收藏、整理、查找」的各种场景,把琐碎复杂的事情变得简单与高效,让收集素材成为⽇常习惯,更让素材真正到想用的时候可以信手拈来!是设计师和摄影爱好者必不可少的工具!

说人话就是:你可以上传你的图片,除了保存在我本地和我购买的存储服务上,还会分发到其他图床,以确保你的图片不会丢失。同时,你还可以对图片进行标签化的管理,给图片打上标签,可以根据标签进行搜索....

项目由来

作为一个(伪)摄影爱好者,平日里有审图的习惯,遇到拍的比较好的图片,就会随手保存下来,以免等到拍小姐姐的时候,不知道如何引导、构图。久而久之,手机里就有很多小姐姐了,真正想回顾一下,再回过头学习就不是那么方便了。以手机相册维度进行管理的图片,没法实现我想实现标签化归类的需求,同时,在不同APP看到的图片,保存下来,也会分散到不同的文件夹,还需要后期批量移动、整理......本来想看看有没有造好了的轮子的,找了一圈下来,没有找到合适的,目前市面上有的,都是基于本地进行管理的,虽然为了一些隐私等安全,能够理解这种设计理念,但无法实现我的要求,难不成随时抱着一台笔记本外出么。而传统意义上的图床吧,也就只是个图床而已,没有一点管理的功能。

与此同时,博客上的图片,一直是购买使用某位大佬的图床程序,对于我来说,过于臃肿,有些设计,没有达到我想要的一些效果,苦于不熟悉PHP,所以一直也就这么用下来了。直到最近因为某个接口的事情,大佬被请喝茶了,同时群里购买过付费程序的群友,也有不少被喊去做笔录,了解相关情况。于是就有了想自己写一套的想法。

所以,本项目由此诞生了。

说一下很多人在问的开源问题

首先,非常感谢大家对这个项目的关注。这里我统一详细回复一下开源的相关问题。

【暂时没有开源的打算】你可以直接使用我部署好的,因为我自己是要一直用的,所以会一直维护下去,我能够保证数据不会丢失,毕竟存了好几份COS、OSS之类。也能够确保不会看你上传了哪些文件,目前已经有鉴黄的功能了,是自动的,除非被AI鉴定为疑似图片,我才能在后台看到,后续涉恐涉暴等都会上线。并且,已经有了“防跑路导出”功能,我提供了预览程序,你可以自己部署,再导入从我站点导出的数据即可。在这些功能的加持下,我相信你能够用的安心。

【如果你确实非常有意,很想自己部署一套,甚至是想商用】可以联系我,我可以根据你的要求,进行定制化开发、部署,当然,肯定不是无偿的,具体就看你和我的协商能力了。

主要原因有以下几点:

  • 目前不具备开源的各方面条件。项目的诞生之初,就是为了我自己的需求的,所以到目前为止,也是按照我自己的需求开发,包括整体的架构等等。①JAVA开发的项目,从部署方面来说,远远比不上PHP的便捷,对于小白来说,光是安装编译环境、软件、导入项目,就够喝一壶的了。②目前图仓整个项目并不是单体的应用,目前主要分为:前端、主站(后端)、分发站(后端)、预览站(后端)。以上两点,我也实在没有时间和精力来整理文档、教程和重构。

  • 分发的一些API,懂的都懂,这部分肯定不会开源。

  • 开源后,肯定会有小白问一堆无脑的问题,想到这,就没有开源的想法了。我没有这个时间、精力和耐心。

项目进度(持续更新中)

20210917重新调整了上传上限这块的逻辑,默认情况下,每个用户每天最多上传100张。也可以在后台单独给某个用户设置上限。图仓目前已经很稳定了,目前的功能,也符合了我一开始的预期。接下来,看情况开发。

20210820图床API已经上线,可以先自行对接ShareX、PicGo等应用。还剩下一些大家希望开发的功能,正在慢慢开发中,近两个月都比较忙。

20210808图片鉴黄功能开发完毕,对接了多家内容审核商。接下来会开发用户反馈的一些功能,预计月底上线。

20210802近期忙,新功能开发暂缓

20210716把支持哪些图片格式单独抽成了配置,这样只需要动态修改即可,无需再重新改代码发布程序了。同时,完成了分发记录的功能,可以展示近期上次/重新分发图片的记录,哪些成功,哪些失败,一目了然~

20210712终于把防跑路的功能全部完成了,光是部署教程就写了4K字左右。这样一来的话,如果图仓跑路不能用了,用户只需要自己部署一套预览的程序即可。使用Docker构建了预览的程序,部署基本就是一行命令的事情了,但还是写了一个从安装到部署的小白教程,累死了。

20210705这周放假把分发的逻辑单独抽出来了,这样方便横向扩展,目前启动了两个分发实例,暂时足够用了。主要是发现试用redis stream实现的消息队列,出现了消息积压,但是又没有收到stream的消息,没有消费的日志。估计是线程挂了,但是又看不出具体原因,只好先拆分出来,多起几个实例。然后通过定时任务,查看堆积情况,以此来判断分发程序是否正常。

20210610又更新了一波功能:图片搜索、用户管理、更新日志等。同时,优化了消息队列,现在处理的速度更快了。优化了图片展示这款的逻辑,如果你访问一张不存在的图片,会统一返回我设置好的图片;如果你访问的图片,所有源都挂了,也会返回一张统一的图片,提醒站长更新图源。

20210528二期基本上开发完毕了,至此,我一开始对于图仓的功能设计已经差不多开发完毕了。最后增加了查看图片分发到各个节点的情况,也能重新分发某个节点,这个功能是非常实用的。剩下再看有什么其他功能想开发的吧,平时就维护一下节点。后期着重“管理”,进行设计和开发。下一次大更新,就不知道什么时候了。

20210525前端文件夹管理相关完善

20210524本来五一期间要上线一版的,结果拖到了现在。新功能的接口也写了差不多了,暂时还没有时间来写前端...

20210430之前用redis实现的消息队列,有一个死循环,以便随时获取新的分发任务,但是这种处理太消耗CPU了,本来服务器购买的是1C的,上线后直接100%运行了。最近把这部分优化掉了,用stream实现了简单的消息队列,五一期间会上一版,然后再观察一波。

20210425购买了一台服务器,把服务全部迁移过去了,晚高峰的时候,速度有了明显的改善。最近很忙,代码没动。

20210415优化了一些并发导致的问题。一边调研一下服务器的选购,一边把文件夹管理相关的功能开发了。最近有点忙,更新慢。

20210409紧急优化了分发这块的逻辑,之前发现线程池莫名其妙就挂了,还在观察中。优化了一些并发导致的问题。近期准备购买服务器,做一些迁移工作,提升体验。

20210327完善了一下安全这块,可以避免一些恶意注册、恶意上传以及简单的一些攻击。jar包的加密也搞定了,前端进行了一点优化。先更新一版,然后再进行正常的功能开发了。等项目完成度差不多了,再换好一点的服务器。

20210320把多模块的项目变成了单模块,主要是想尝试一下代码混淆和jar包加密,试了一下目前加密的工具,对于多模块打包的项目,都有点问题,试了很久很久,发现单模块的项目就没有问题了。最近主要是在优化安全这块的,例如增加一些风控,防止一些滥用的情况,每天可上传的数量以及总大小都做了一些限制等等。安全性这块,还得花点时间。

20210309最近把图片的预览和其他功能剥离开来了,分开进行部署。这样的话,可以增强系统的稳定性,也方便进行横向扩展。如果遇到了攻击,也能够保证已经上传好了的图片能够正常访问。研究了一些新的接口,基本上别人家有的接口,我这都有,别人家没有的接口,我这还有~

20210303最近重构了分发这块的队列,做了一些减法,因为目前从使用人数和频繁度上面来说,不需要太复杂的队列来处理分发。同时,有不少接口挂了,又更新了一批新的接口,目前一共有二十多个接口,开放了十五个,足够足够用了。距离上次更新,已经很久了,主要是太忙,没有太多空闲的时间,最近还是准备挤一挤,每周都更新一点点,哪怕是一点点也好。

由于前后端都是我一个人,白天还得上班,进度比较慢。不过目前也没有其他用户,我开发这玩意儿,初衷也不是为了给谁用,怎么推广之类的,所以,基本上开发什么、开发进度,纯凭个人了。不过,我还是希望能够找到一个开发前端的同学,最好是在校大学生(因为没有酬劳哈哈哈哈),你可以当做练手的项目,在企业中项目实际的开发流程和部署运维等,我基本了解一些,能够给你讲讲。做好后也可以写到你的简历上。我会一直做下去,如果可能的话,可以推广一下,我相信需要这个的人,还是有的。扯远了...

目前一期功能已经开发并上线了,也就是目前你看到的效果。能够注册登录、批量上传图片、异地分发图片、图片打标签、按照标签搜索,等等。不过由于第一期开发的很匆忙,没有仔细测试,BUG应该有不少,特别是前端的。所以欢迎大家给我反馈BUG,给我建议和意见。

图片存储

这里我只简单说下。目前上传图片,首先会往本地上传一份,然后直接返回成功,不需要经过漫长的等待。同时,会进行异步的分发,分发到腾讯COS、阿里OSS以及几个公开的图床。当然,这里都是可以方便的进行扩展的,在二期我也会实现动态的管理接口,包括开启禁用、权重等等(已实现)。所以不用担心你的图片会丢失,若你想上传一些偏隐私的图片,暂时不建议,二期我会开发相应的功能,可以不进行分发,只保存到我的COS和OSS(已实现),若可能的话,可以对接你的一些网络存储,例如云盘什么的。

图片上传原理

图片上传原理

图片预览原理

图片预览原理

技术栈

  • Springboot
  • Mysql
  • Redis
  • Mybatis Plus
  • Shiro
  • VUE
  • Element UI

贴几张图

前端使用的是开源框架,目前都没有怎么开发样式,也没有这个精力,等会前端的有缘人吧。随着开发,功能会增多,但是下面的图片不一定会及时更新。

首页

首页

登录后管理员首页

普通用户只有 “首页”、“图片管理”、“标签管理”、“分发记录”、“防跑路导出”功能 登录后管理员首页

图片管理

后台-图片管理-列表视图

后台-图片管理-图片详情

后台-图片管理

后台-图片管理

标签管理

后台-标签管理

防跑路导出

后台-防跑路导出

分发记录

后台-分发记录

管理员-API管理

后台-管理员API管理

管理员-图片审核

后台-图片审核

最后

如果本项目帮助到了你,可以给我提供建议和意见,如果身边有需要的人,也可以帮忙推荐一下,最后还烦请帮忙点个Star~

About

图仓是一款以图片上传、图片分发、图片管理为核心的图床/图片管理平台,能够满足「收藏、整理、查找」的各种场景,把琐碎复杂的事情变得简单与高效,让收集素材成为⽇常习惯,更让素材真正到想用的时候可以信手拈来!是设计师和摄影爱好者必不可少的工具!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published