From ddf1004b9218c462121305bb371017d3534d8d83 Mon Sep 17 00:00:00 2001 From: stackcoder Date: Sun, 26 Apr 2026 19:12:40 +0200 Subject: [PATCH] feat: add OpenEXR as supported image format --- docs/docs/features/supported-formats.md | 1 + e2e/src/ui/mock-network/base-network.ts | 1 + server/src/queries/asset.job.repository.sql | 1 + server/src/services/asset-media.service.spec.ts | 1 + server/src/utils/mime-types.spec.ts | 2 ++ server/src/utils/mime-types.ts | 2 ++ 6 files changed, 8 insertions(+) diff --git a/docs/docs/features/supported-formats.md b/docs/docs/features/supported-formats.md index 917950dd2a..ef60393c6b 100644 --- a/docs/docs/features/supported-formats.md +++ b/docs/docs/features/supported-formats.md @@ -12,6 +12,7 @@ For the full list, refer to the [Immich source code](https://github.com/immich-a | :---------- | :---------------------------- | :----------------: | :-------------- | | `AVIF` | `.avif` | :white_check_mark: | | | `BMP` | `.bmp` | :white_check_mark: | | +| `OpenEXR` | `.exr` | :white_check_mark: | | | `GIF` | `.gif` | :white_check_mark: | | | `HEIC` | `.heic` | :white_check_mark: | | | `HEIF` | `.heif` | :white_check_mark: | | diff --git a/e2e/src/ui/mock-network/base-network.ts b/e2e/src/ui/mock-network/base-network.ts index 3dc3580396..2384b957d7 100644 --- a/e2e/src/ui/mock-network/base-network.ts +++ b/e2e/src/ui/mock-network/base-network.ts @@ -190,6 +190,7 @@ export const setupBaseMockApiRoutes = async (context: BrowserContext, adminUserI '.dcr', '.dng', '.erf', + '.exr', '.fff', '.iiq', '.k25', diff --git a/server/src/queries/asset.job.repository.sql b/server/src/queries/asset.job.repository.sql index 746ef6bfee..97e65deeef 100644 --- a/server/src/queries/asset.job.repository.sql +++ b/server/src/queries/asset.job.repository.sql @@ -156,6 +156,7 @@ where '%.srf', '%.srw', '%.x3f', + '%.exr', '%.heic', '%.heif', '%.hif', diff --git a/server/src/services/asset-media.service.spec.ts b/server/src/services/asset-media.service.spec.ts index cb3cc4d62a..e16ec4866f 100644 --- a/server/src/services/asset-media.service.spec.ts +++ b/server/src/services/asset-media.service.spec.ts @@ -69,6 +69,7 @@ const validImages = [ '.dcr', '.dng', '.erf', + '.exr', '.fff', '.gif', '.heic', diff --git a/server/src/utils/mime-types.spec.ts b/server/src/utils/mime-types.spec.ts index fd670da773..8bd52bbc28 100644 --- a/server/src/utils/mime-types.spec.ts +++ b/server/src/utils/mime-types.spec.ts @@ -55,6 +55,7 @@ describe('mimeTypes', () => { { mimetype: 'image/x-canon-cr3', extension: '.cr3' }, { mimetype: 'image/x-canon-crw', extension: '.crw' }, { mimetype: 'image/x-epson-erf', extension: '.erf' }, + { mimetype: 'image/x-exr', extension: '.exr' }, { mimetype: 'image/x-fuji-raf', extension: '.raf' }, { mimetype: 'image/x-hasselblad-3fr', extension: '.3fr' }, { mimetype: 'image/x-hasselblad-fff', extension: '.fff' }, @@ -159,6 +160,7 @@ describe('mimeTypes', () => { for (const img of [ 'a.avif', 'a.bmp', + 'a.exr', 'a.gif', 'a.heic', 'a.heif', diff --git a/server/src/utils/mime-types.ts b/server/src/utils/mime-types.ts index be98edb9f0..b8a496519c 100644 --- a/server/src/utils/mime-types.ts +++ b/server/src/utils/mime-types.ts @@ -51,6 +51,7 @@ const webSupportedImage = { const webUnsupportedImage = { ...raw, + '.exr': ['image/x-exr'], '.heic': ['image/heic'], '.heif': ['image/heif'], '.hif': ['image/hif'], @@ -81,6 +82,7 @@ const extensionOverrides: Record = { const transparentCapableExtensions = new Set([ '.avif', '.bmp', + '.exr', '.gif', '.heic', '.heif',