Browse Source

fix(asset-server-plugin): Correctly handle non-integer image dimensions

Michael Bromley 6 năm trước cách đây
mục cha
commit
e28c2b3374

+ 10 - 0
packages/asset-server-plugin/e2e/asset-server-plugin.e2e-spec.ts

@@ -153,6 +153,16 @@ describe('AssetServerPlugin', () => {
             expect(files.length).toBe(2);
         });
     });
+
+    describe('unexpected input', () => {
+        it('does not error on non-integer width', async () => {
+            return fetch(`${asset.preview}?w=10.5`);
+        });
+
+        it('does not error on non-integer height', async () => {
+            return fetch(`${asset.preview}?h=10.5`);
+        });
+    });
 });
 
 export const CREATE_ASSETS = gql`

+ 2 - 2
packages/asset-server-plugin/src/transform-image.ts

@@ -13,8 +13,8 @@ export async function transformImage(
     queryParams: Record<string, string>,
     presets: ImageTransformPreset[],
 ): Promise<sharp.Sharp> {
-    let targetWidth = +queryParams.w || undefined;
-    let targetHeight = +queryParams.h || undefined;
+    let targetWidth = Math.round(+queryParams.w) || undefined;
+    let targetHeight = Math.round(+queryParams.h) || undefined;
     let mode = queryParams.mode || 'crop';
     const fpx = +queryParams.fpx || undefined;
     const fpy = +queryParams.fpy || undefined;