logo 摸鱼论坛beta

Moyuimage 内测上线。

功能特性

  • 图片上传:拖拽 / 点击 / 粘贴上传,支持 PNG、JPEG、GIF、WebP、AVIF,单文件上限 100MB
  • 图片处理:WebP 压缩(质量可调)、缩略图生成、文字水印、EXIF 自动旋转与隐私剥离
  • 多格式链接:直链、HTML、Markdown、BBCode 一键复制,支持批量操作
  • 用户系统:登录门控、注册开关、bcrypt 密码加密、API 密钥、会话版本控制
  • 管理后台:独立管理页面,用户管理(编辑 / 封禁 / 删除)、存储配额、访问统计、审计日志
  • S3 对象存储:支持 S3 / R2 / B2 等兼容服务,本地与 S3 混合存储,切换不丢链接
  • 备份恢复:手动 / 自动备份到 S3 或 Webhook,支持轮转策略
  • 安全机制:CSRF 防护、登录限流、上传限流、存储配额、封禁系统
  • 个性化:自定义站点名称 / 图标 / 公告,深色模式,响应式布局

核心功能

1. 图片上传

  • 多种上传方式:拖拽上传、点击选择文件、剪贴板粘贴(Ctrl+V)
  • 支持格式:PNG、JPEG、GIF、WebP、AVIF
  • 单文件上限:100MB
  • 每日限额:每用户 200 张/天
  • 并发控制:最多 3 张同时上传,自动排队
  • 智能去重:上传前计算文件 MD5 哈希,若站内已有相同图片则跳过处理,直接返回已有链接,节省存储空间和处理时间

2. 图片处理

  • WebP 压缩:自动将上传图片转为 WebP 格式,质量可调(10-100,默认 95)
  • 缩略图生成:自动生成 400x400 WebP 缩略图(质量 80),用于列表展示
  • 文字水印:支持自定义文字水印,自动叠加在图片右下角(SVG 渲染)
  • EXIF 自动旋转:根据照片 EXIF 信息自动校正方向
  • EXIF 隐私剥离:上传时自动移除图片中的 EXIF 元数据(GPS 定位、设备信息、拍摄参数等),保护用户隐私

3. 多格式链接

上传完成后自动生成四种格式的分享链接,一键复制:

格式 示例
直链 https://img.example.com/abc.webp
HTML <img src="https://img.example.com/abc.webp">
Markdown ![image](https://img.example.com/abc.webp)
BBCode [img]https://img.example.com/abc.webp[/img]
  • 支持批量选择、批量复制链接
  • 上传后可设置自动复制链接

4. 图片管理

  • 分页浏览:每页 12 张,带缩略图预览
  • 图片详情弹窗:支持缩放、拖拽平移查看
  • 批量操作:批量选择、批量复制、批量删除
  • 自动清理:可设置图片自动删除天数(1-365 天),每小时自动执行
  • 安全删除:去重图片采用引用计数机制,仅当无其他用户引用同一文件时才删除物理文件,避免误删共享资源

5. 用户系统

  • 登录门控:未登录用户无法访问任何页面,自动弹出登录/注册弹窗
  • 管理员账户:默认账号 admin,默认密码 admin(首次登录后务必修改)
  • 用户注册:默认关闭,管理员可在后台开启
  • 密码安全:bcrypt 哈希加密存储,修改密码自动使旧会话失效
  • API 密钥:每个用户拥有独立 API Key,可通过 X-API-Key 请求头调用接口


    地址: https://dalao.pro

醉里不知天在水 𢵗水捧月扰清波。

  • 我靠,站长发财了,这得多大的服务器

  • @cc #1
    :xhj024: 发毛财,就是闲的蛋疼,折腾一下,后期就是论坛使用,不对外开发。

  • :xhj011:为啥502了

  • @eva #3
    稍等5分钟, 在更新一个功能。

  • @eva #5
    现在应该可以了。

  • 所以不绑定本站的账号吗:xhj007:

  • @eva #7
    是这样想的,暂时还在测试中,这个稍后会做。

  • @crll #8
    不绑定站点的话,不好处理违规的人,隔壁就有用图床瞎存图的

  • @eva #9
    已经上线了,你测试一下。

  • @crll #10
    授权正常,看起来没问题,等级到时候会有功能区别吗?

  • @eva #11
    等级暂时只有 每天存储图片数量的区别,其它的后期想到什么再增加。
    现在是:

    // 每用户每日上传数量上限(按等级)
    export const DAILY_UPLOAD_LIMIT_BY_LEVEL = {
      1: 20,
      2: 40,
      3: 60,
      4: 100,
      5: 160,
      6: 200,
    };
    export const DEFAULT_DAILY_UPLOAD_LIMIT = 20;

你好呀,陌生人

看起来你是新来的,如果想参与讨论,可以先登录或注册。

Statistics

注册会员: 280
主题: 530
回复: 1549

所有版块