本文档详细介绍了 Immich 的相册系统和分享功能。它涵盖了资产如何组织到相册中、与他人分享内容的方法,以及通过链接进行的公开分享。有关资产管理的信息,请参阅 资产管理。
Immich 中的相册提供了一种组织和分组资产(照片和视频)的方式。它们支持个人整理和与其他用户的协作分享。
相册由 AlbumResponseDto 对象表示,具有以下关键属性:
| 属性 | 类型 | 描述 |
|---|---|---|
id | 字符串 | 相册的唯一标识符 |
albumName | 字符串 | 相册的显示名称 |
description | 字符串 | 可选的相册描述 |
assetCount | 数字 | 相册中的资产数量 |
albumThumbnailAssetId | 字符串 | 用作相册封面的资产 ID |
ownerId | 字符串 | 相册所有者的用户 ID |
isActivityEnabled | 布尔值 | 是否启用评论/点赞 |
order | AssetOrder | 相册资产的排序顺序 |
albumUsers | AlbumUserDto[] | 拥有相册访问权限的用户 |
shared | 布尔值 | 相册是否已分享给他人 |
hasSharedLink | 布尔值 | 是否存在公开分享链接 |
来源:web/src/lib/components/album-page/album-viewer.svelte29-33 web/src/lib/components/asset-viewer/detail-panel.svelte52-56
相册支持以下核心操作:
来源:web/src/lib/components/album-page/album-viewer.svelte web/src/lib/utils/asset-utils.ts41-143
Immich 支持两种不同的内容分享方法:
当相册分享给其他用户时,这些用户会成为具有特定权限的“相册用户”。这使得协作相册成为可能,允许多个用户贡献和互动。
相册用户可以拥有不同的角色,控制他们可以执行的操作:
| 角色 | 描述 | 可查看 | 可添加/移除资产 | 可修改相册 | 可添加/移除用户 |
|---|---|---|---|---|---|
| 所有者 | 相册的创建者 | ✓ | ✓ | ✓ | ✓ |
| 管理员 | 拥有广泛权限的管理员 | ✓ | ✓ | ✓ | ✓ |
| 编辑器 | 可添加/移除资产 | ✓ | ✓ | ✗ | ✗ |
| 查看者 | 只读访问权限 | ✓ | ✗ | ✗ | ✗ |
角色定义在 AlbumUserRole 枚举中。
来源:web/src/lib/components/album-page/album-options.svelte8-14 web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:59-80
来源:web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:296-311
分享链接允许任何人通过链接访问内容,即使他们没有 Immich 账户。
| 属性 | 描述 |
|---|---|
id | 分享链接的唯一标识符 |
key | 公开访问密钥(用于 URL) |
description | 可选描述 |
allowDownload | 是否允许下载 |
allowUpload | 接收者是否可以上传资产 |
showMetadata | 是否显示资产元数据 |
assets(资源) | 包含在分享链接中的资产 |
album | 正在分享的相册(如果分享的是相册) |
expiresAt | 可选的过期日期 |
password | 可选的密码保护 |
来源:web/src/lib/components/share-page/individual-shared-viewer.svelte31-37 web/src/routes/(user)/share/[key]/[[photos=photos]]/[[assetId=id]]/+page.svelte:26-28
来源:web/src/routes/(user)/share/[key]/[[photos=photos]]/[[assetId=id]]/+page.svelte:29-52
相册可以启用活动功能,允许用户通过评论和点赞与内容互动。
支持两种主要活动类型:
来源:web/src/lib/components/asset-viewer/asset-viewer.svelte124-184 web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:152-199
相册和分享功能通过一系列协同工作的用户界面组件实现。
| 组件 | 目的 | 核心功能 |
|---|---|---|
AlbumViewer | 查看相册的主要界面 | 显示相册资产和信息 |
AlbumTitle | 显示并允许编辑相册名称 | 编辑相册名称 |
AlbumDescription | 显示并允许编辑相册描述 | 编辑相册描述 |
AlbumSummary | 显示相册元数据 | 显示资产数量、日期范围 |
AssetGrid | 显示相册中资产的网格 | 浏览、选择和查看资产 |
ActivityViewer | 显示和管理评论及点赞 | 添加/移除评论和点赞 |
ShareInfoModal | 分享设置界面 | 配置分享选项 |
UserSelectionModal | 选择要分享的用户 | 选择用户并设置权限 |
来源:web/src/lib/components/album-page/album-viewer.svelte2-46 web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:1-47
来源:web/src/lib/components/asset-viewer/asset-viewer.svelte38-69 web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:29-167
相册中的资产可以通过多种方式进行互动:
当在相册中选择一个资产时,它会在 AssetViewer 组件中打开,该组件提供多项功能:
来源:web/src/lib/components/asset-viewer/asset-viewer.svelte91-188 web/src/lib/components/asset-viewer/detail-panel.svelte58-92
AssetGrid 组件提供了在相册中浏览和选择资产的主要界面。
来源:web/src/lib/components/photos-page/asset-grid.svelte30-70 web/src/lib/components/photos-page/asset-date-group.svelte25-37
将资产添加到相册的过程涉及以下关键功能:
addAssetsToAlbum:将现有资产添加到相册addAssetsToNewAlbum:创建一个新相册并添加资产来源:web/src/lib/utils/asset-utils.ts41-143
相册分享使用以下关键功能:
addUsersToAlbum:将用户添加到相册并指定角色updateAlbumUser:更新用户在相册中的角色removeUserFromAlbum:从相册中移除用户来源:web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:296-326
通过以下功能管理活动(评论和点赞):
createActivity:创建新的评论或点赞getActivities:检索资产或相册的活动deleteActivity:移除活动getActivityStatistics:获取评论和点赞的数量来源:web/src/lib/components/asset-viewer/asset-viewer.svelte138-184 web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:155-199
相册和分享的安全性在多个层面实现:
创建和分享相册的典型用户流程
来源:web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte:106-315, web/src/lib/components/share-page/individual-shared-viewer.svelte38-140
Immich 中的相册和分享系统提供了组织资产和与他人分享的灵活方式。用户共享和公开链接共享的结合,以及活动功能实现的社交互动,共同促进了各种协作场景。