diff --git a/packages/binding/__test__/transformer.spec.mjs b/packages/binding/__test__/transformer.spec.mjs index 3b572d0..1225e6a 100644 --- a/packages/binding/__test__/transformer.spec.mjs +++ b/packages/binding/__test__/transformer.spec.mjs @@ -37,6 +37,13 @@ test('should be able to get exif from jpg', async (t) => { t.is(metadata.format, 'jpeg') }) +test('should be able to get metadata from jpg - sync', (t) => { + const decoder = new Transformer(JPEG) + const metadata = decoder.metadataSync() + t.is(metadata.width, 1024) + t.is(metadata.height, 678) +}) + test('should be able to encode into webp', async (t) => { const decoder = new Transformer(PNG) await t.notThrowsAsync(() => decoder.webp(75)) diff --git a/packages/binding/src/transformer.rs b/packages/binding/src/transformer.rs index 218677d..2e8ae5f 100644 --- a/packages/binding/src/transformer.rs +++ b/packages/binding/src/transformer.rs @@ -781,6 +781,16 @@ impl Transformer { ) } + #[napi] + pub fn metadata_sync(&mut self, env: Env, with_exif: Option) -> Result { + let mut task = MetadataTask { + dynamic_image: self.dynamic_image.clone(), + with_exif: with_exif.unwrap_or(false), + }; + let output = task.compute()?; + task.resolve(env, output) + } + #[napi] /// Rotate with exif orientation /// If the orientation param is not null, diff --git a/website/pages/docs/index.mdx b/website/pages/docs/index.mdx index 309dec3..67ea33d 100644 --- a/website/pages/docs/index.mdx +++ b/website/pages/docs/index.mdx @@ -79,6 +79,7 @@ writeFileSync( ```ts metadata(withExif?: boolean | undefined | null, signal?: AbortSignal | undefined | null): Promise +metadataSync(withExif?: boolean | undefined | null): Metadata export interface Metadata { width: number