From 139b635eed6985bee536ec0e11b7bcf860bf0442 Mon Sep 17 00:00:00 2001 From: Surma Date: Fri, 18 Sep 2020 16:00:29 +0100 Subject: [PATCH] Add PNG encoding support --- cli/src/codecs.js | 5 ++++- codecs/png/Cargo.lock | 1 - codecs/png/pkg/squoosh_png_bg.wasm | Bin 978800 -> 978800 bytes 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cli/src/codecs.js b/cli/src/codecs.js index 1ad33bdc..854668f2 100644 --- a/cli/src/codecs.js +++ b/cli/src/codecs.js @@ -133,7 +133,10 @@ export default { }, enc: async () => { await pngEncDecPromise; - return { encode: (...args) => new Uint8Array(pngEncode(...args)) }; + return { + encode: (buffer, ...args) => + new Uint8Array(pngEncode(new Uint8Array(buffer), ...args)) + }; }, defaultEncoderOptions: {} } diff --git a/codecs/png/Cargo.lock b/codecs/png/Cargo.lock index ea2dfdc0..652fb0a7 100644 --- a/codecs/png/Cargo.lock +++ b/codecs/png/Cargo.lock @@ -116,7 +116,6 @@ dependencies = [ name = "squoosh-png" version = "0.1.0" dependencies = [ - "log", "png", "wasm-bindgen", "web-sys", diff --git a/codecs/png/pkg/squoosh_png_bg.wasm b/codecs/png/pkg/squoosh_png_bg.wasm index 3f81e9a3208ce7a400ed30a3216fc705c84da7c3..9de06b416e25514d3fc7666f6a18f574ce8ba600 100644 GIT binary patch delta 10424 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 delta 10354 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