1359 字
7 分钟
博客相册使用说明

🖼️ 相册#

1. 功能支持#

​ 相册系统支持两种存储模式灵活的显示控制

  • 存储模式
    • 本地模式:图片存储在服务器本地文件系统
    • 外链模式:图片通过外部链接引用
  • 显示控制
    • 自动扫描图片、生成相册
    • 支持多种布局网格瀑布流
    • 相册隐藏控制
    • 标签和元数据管理

2. 模式说明#

2.1 模式对比#

特性本地模式外链模式
图片存储本地文件系统外部链接
加载速度快速取决于外部服务
存储成本占用服务器空间无本地存储成本
稳定性取决于外部服务
配置复杂度简单中等
适用场景个人网站、小型项目大量图片、CDN优化

2.2 文件夹组织结构#

public/images/albums/
├── 相册名称1/
│ ├── info.json # 必需:相册配置
│ ├── cover.jpg # 本地模式必需:封面图
│ ├── photo1.jpg # 本地模式:相册图片
│ └── photo2.png
├── 相册名称2/
│ └── info.json # 外链模式只需配置文件
└── ...

2.3 基础设定#

2.3.1 配置文件#

​ 每个相册都需要一个 info.json 配置文件,位于相册文件夹内。

2.3.2 通用字段说明#

字段类型必需说明
modestring不设置:本地模式,external :外链模式
hiddenboolean是否隐藏相册,true 为隐藏
titlestring相册标题
descriptionstring相册描述
datestring创建日期,格式:YYYY-MM-DD
locationstring拍摄地点
tagsarray标签数组
layoutstring布局方式:gridmasonry
columnsnumber列数,默认 3

2.3.3 支持的图片格式#

  • .jpg / .jpeg
  • .png
  • .gif
  • .webp
  • .svg
  • .avif
  • .bmp
  • .tiff / .tif

2.4 本地模式详解#

2.4.1 文件结构#

相册名称/
├── info.json # 配置文件
├── cover.jpg # 封面图(必需)
├── 图片1.jpg
├── 图片2.png
├── 图片3.gif
└── ...

2.4.2 文件命名规则#

  • 封面图片必须命名为 cover.jpg
  • 其他图片可以任意命名
  • 支持中文文件名
  • 建议使用有意义的文件名

2.5 外链模式详解#

2.5.1 文件结构#

相册名称/
└── info.json # 配置文件

​ 外链模式需要在 info.json完整定义所有图片信息

2.5.2 照片字段说明#

字段类型必需说明
idstring唯一标识符,不设置会自动生成
srcstring图片链接地址
thumbnailstring缩略图链接
altstring替代文本
titlestring图片标题
descriptionstring图片描述
tagsarray图片标签
datestring拍摄日期
locationstring拍摄地点
width/heightnumber图片尺寸
camerastring相机型号
lensstring镜头信息
settingsobject拍摄参数

2.5.3 完整版配置示例#

{
"mode": "external",
"title": "风景摄影集",
"description": "来自世界各地的美丽风景",
"date": "2024-08-20",
"location": "全球",
"tags": ["风景", "摄影", "自然"],
"layout": "masonry",
"columns": 3,
"cover": "https://cdn.example.com/albums/landscape/cover.jpg",
"photos": [
{
"id": "mountain-sunset",
"src": "https://cdn.example.com/photos/mountain-sunset.jpg",
"thumbnail": "https://cdn.example.com/thumbs/mountain-sunset.jpg",
"alt": "山顶日落",
"title": "阿尔卑斯山日落",
"description": "在阿尔卑斯山顶拍摄的壮丽日落景象",
"tags": ["山脉", "日落", "阿尔卑斯"],
"date": "2024-07-15",
"location": "瑞士阿尔卑斯山",
"width": 1920,
"height": 1080,
"camera": "Canon EOS R5",
"lens": "RF 24-70mm f/2.8L IS USM",
"settings": {
"aperture": "f/8",
"shutter": "1/125",
"iso": "200",
"focal": "35mm"
}
},
{
"id": "ocean-waves",
"src": "https://cdn.example.com/photos/ocean-waves.jpg",
"alt": "海浪",
"title": "太平洋海浪",
"tags": ["海洋", "海浪"],
"width": 1920,
"height": 1280
}
]
}

2.5.4 外链服务推荐#

  • 免费服务:Imgur、Cloudinary(有免费额度)
  • 付费CDN:阿里云OSS、腾讯云COS、AWS S3
  • 图床服务:SM.MS、路过图床
  • GitHub:注意使用限制

3. 隐藏功能#

3.1 使用方法#

​ 在任何模式的 info.json 中添加 "hidden": true 即可隐藏相册。

  • "hidden": true:隐藏相册
  • "hidden": false :显示相册

3.2 隐藏行为#

  • 相册不会出现在相册列表页面

  • 不是真正的访问控制:文件仍然保留在服务器上,知道直接链接仍可访问

3.3 使用场景#

  1. 临时隐藏:维护期间暂时隐藏
  2. 私人内容:不想公开展示的相册
  3. 测试相册:开发测试用途
  4. 未完成相册:正在整理中的内容
  5. 季节性展示:特定时期才显示

4. 相册配置示例#

4.1 本地模式相册#

{
"title": "家庭聚会",
"description": "2024年春节家庭聚会的温馨时光",
"date": "2024-02-10",
"location": "北京",
"tags": ["家庭", "春节", "聚会"],
"layout": "grid",
"columns": 4
}

4.2 外链模式相册#

{
"mode": "external",
"title": "街头摄影",
"description": "城市街头的生活瞬间",
"date": "2024-06-15",
"location": "上海",
"tags": ["街头", "摄影", "城市"],
"layout": "masonry",
"columns": 3,
"cover": "https://cdn.example.com/street/cover.jpg",
"photos": [
{
"src": "https://cdn.example.com/street/photo1.jpg",
"alt": "街头行人",
"title": "匆忙的脚步",
"tags": ["行人", "街头"]
},
{
"src": "https://cdn.example.com/street/photo2.jpg",
"alt": "咖啡店",
"title": "角落的咖啡店",
"tags": ["咖啡", "店铺"]
}
]
}

4.3 隐藏的外链模式相册#

{
"mode": "external",
"hidden": true,
"title": "测试相册",
"description": "用于测试的相册,暂时隐藏",
"cover": "https://picsum.photos/800/600",
"photos": [
{
"src": "https://picsum.photos/800/600?random=1",
"alt": "测试图片"
}
]
}

5. 最佳实践经验#

  • 本地模式压缩图片以节省空间和提高加载速度
  • 外链模式:使用CDN适当的图片格式以提高访问速度
  • 建议尺寸封面图建议800x600相册图片建议不超过2000px
  • 标签管理:避免过多的标签,建议只使用3到5个标签
    • "tags": ["事件标签", "人物标签", "地点标签"]
  • 布局选择
    • Grid布局:适合尺寸相近的图片
    • Masonry布局:适合尺寸差异较大的图片
    • 列数设置:手机端建议1-2列,桌面端3-4列
封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00