From e3ea84a0d530efe771a3d87051b6388c6aa269c9 Mon Sep 17 00:00:00 2001 From: holegots Date: Wed, 1 Jul 2026 02:17:25 +0800 Subject: [PATCH] fix(server): keep image size priority for metadata --- e2e/src/specs/server/api/asset.e2e-spec.ts | 12 ++++++------ server/src/services/metadata.service.ts | 15 ++++++--------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/e2e/src/specs/server/api/asset.e2e-spec.ts b/e2e/src/specs/server/api/asset.e2e-spec.ts index 4d0f9ff055..ccebd1ca77 100644 --- a/e2e/src/specs/server/api/asset.e2e-spec.ts +++ b/e2e/src/specs/server/api/asset.e2e-spec.ts @@ -875,8 +875,8 @@ describe('/asset', () => { exifInfo: { make: 'SONY', model: 'ILCE-6300', - exifImageHeight: 4000, - exifImageWidth: 6000, + exifImageHeight: 4024, + exifImageWidth: 6048, exposureTime: '1/320', fNumber: 8, focalLength: 97, @@ -897,8 +897,8 @@ describe('/asset', () => { exifInfo: { make: 'SONY', model: 'ILCE-7M2', - exifImageHeight: 4000, - exifImageWidth: 6000, + exifImageHeight: 4024, + exifImageWidth: 6048, exposureTime: '1.3', fNumber: 22, focalLength: 25, @@ -943,8 +943,8 @@ describe('/asset', () => { exifInfo: { make: 'FUJIFILM', model: 'X100V', - exifImageHeight: 2944, - exifImageWidth: 4416, + exifImageHeight: 4160, + exifImageWidth: 6240, exposureTime: '1/4000', fNumber: 16, focalLength: 23, diff --git a/server/src/services/metadata.service.ts b/server/src/services/metadata.service.ts index f331e5b383..171dcfe514 100644 --- a/server/src/services/metadata.service.ts +++ b/server/src/services/metadata.service.ts @@ -562,16 +562,13 @@ export class MetadataService extends BaseService { private getImageDimensions(exifTags: ImmichTags): { width?: number; height?: number } { /* * The "true" values for width and height are a bit hidden, depending on the camera model and file format. - * ExifImageWidth/Height is the rendered image size for cropped RAWs, while ImageSize is still needed for - * formats where ImageWidth/ImageHeight point at the embedded preview. + * For RAW images in the CR2 or RAF format, the "ImageSize" value seems to be correct, + * but ImageWidth and ImageHeight are not correct (they contain the dimensions of the preview image). */ - let [width, height] = [exifTags.ExifImageWidth, exifTags.ExifImageHeight]; - if (!width || !height) { - [width, height] = - exifTags.ImageSize?.toString() - ?.split('x') - ?.map((dim) => Number.parseInt(dim) || undefined) ?? []; - } + let [width, height] = + exifTags.ImageSize?.toString() + ?.split('x') + ?.map((dim) => Number.parseInt(dim) || undefined) ?? []; if (!width || !height) { [width, height] = [exifTags.ImageWidth, exifTags.ImageHeight]; }