diff --git a/__test__/draw.spec.ts b/__test__/draw.spec.ts index e1ae4092..7bbd465d 100644 --- a/__test__/draw.spec.ts +++ b/__test__/draw.spec.ts @@ -946,7 +946,7 @@ test('JPEG toDataURL with quality', async (t) => { const { ctx, canvas } = t.context drawTranslate(ctx) - const output = canvas.toDataURL('image/jpeg', 20) + const output = canvas.toDataURL('image/jpeg', 0.2) const prefix = 'data:image/jpeg;base64,' t.true(output.startsWith(prefix)) const imageBase64 = output.substring(prefix.length) @@ -958,7 +958,7 @@ test('WebP toDataURL with quality', async (t) => { const { ctx, canvas } = t.context drawTranslate(ctx) - const output = canvas.toDataURL('image/webp', 100) + const output = canvas.toDataURL('image/webp', 1) const prefix = 'data:image/webp;base64,' t.true(output.startsWith(prefix)) const imageBase64 = output.substring(prefix.length) diff --git a/src/lib.rs b/src/lib.rs index 37d74c63..ed80c0c6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -335,8 +335,10 @@ fn data(ctx: CallContext) -> Result { fn to_data_url(ctx: CallContext) -> Result { let mime_js = ctx.get::(0)?.into_utf8()?; let mime = mime_js.as_str()?; - let quality = match ctx.get::(1)?.get_uint32() { - Ok(number) => number as u8, + // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL + // quality is a number between 0.0 and 1.0 + let quality = match ctx.get::(1)?.get_double() { + Ok(number) => (number * 100.0) as u8, Err(_e) => match mime { MIME_WEBP => DEFAULT_WEBP_QUALITY, _ => DEFAULT_JPEG_QUALITY, // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL