diff --git a/packages/payload/src/uploads/imageResizer.ts b/packages/payload/src/uploads/imageResizer.ts index e5d08180ca..82560adb5a 100644 --- a/packages/payload/src/uploads/imageResizer.ts +++ b/packages/payload/src/uploads/imageResizer.ts @@ -360,6 +360,7 @@ export async function resizeAndTransformImageSizes({ const prioritizeHeight = resizeAspectRatio < originalAspectRatio // Scales the image before extracting from it resized = imageToResize.resize({ + fastShrinkOnLoad: false, height: prioritizeHeight ? resizeHeight : undefined, width: prioritizeHeight ? undefined : resizeWidth, }) diff --git a/test/uploads/config.ts b/test/uploads/config.ts index 8e25e75457..183591a7a7 100644 --- a/test/uploads/config.ts +++ b/test/uploads/config.ts @@ -390,6 +390,10 @@ export default buildConfigWithDefaults({ height: 300, width: 300, }, + { + name: 'undefinedHeight', + width: 300, + }, ], pasteURL: false, }, diff --git a/test/uploads/e2e.spec.ts b/test/uploads/e2e.spec.ts index 399212e141..2b3867623b 100644 --- a/test/uploads/e2e.spec.ts +++ b/test/uploads/e2e.spec.ts @@ -400,6 +400,20 @@ describe('Uploads', () => { await expect(page.locator('.row-3 .cell-title')).toContainText('draft') }) + test('should upload edge case media when an image size contains an undefined height', async () => { + await page.goto(mediaURL.create) + await page.setInputFiles( + 'input[type="file"]', + path.resolve(dirname, './test-image-1500x735.jpeg'), + ) + + const filename = page.locator('.file-field__filename') + + await expect(filename).toHaveValue('test-image-1500x735.jpeg') + + await saveDocAndAssert(page) + }) + describe('filterOptions', () => { test('should restrict mimetype based on filterOptions', async () => { const audioDoc = ( diff --git a/test/uploads/payload-types.ts b/test/uploads/payload-types.ts index 1956fbcdba..5196cd9bfa 100644 --- a/test/uploads/payload-types.ts +++ b/test/uploads/payload-types.ts @@ -64,6 +64,7 @@ export interface Config { auth: { users: UserAuthOperations; }; + blocks: {}; collections: { relation: Relation; audio: Audio; @@ -327,6 +328,14 @@ export interface Media { filesize?: number | null; filename?: string | null; }; + undefinedHeight?: { + url?: string | null; + width?: number | null; + height?: number | null; + mimeType?: string | null; + filesize?: number | null; + filename?: string | null; + }; }; } /** @@ -2018,6 +2027,16 @@ export interface MediaSelect { filesize?: T; filename?: T; }; + undefinedHeight?: + | T + | { + url?: T; + width?: T; + height?: T; + mimeType?: T; + filesize?: T; + filename?: T; + }; }; } /** diff --git a/test/uploads/test-image-1500x735.jpeg b/test/uploads/test-image-1500x735.jpeg new file mode 100644 index 0000000000..0859fa8a48 Binary files /dev/null and b/test/uploads/test-image-1500x735.jpeg differ