From 1f16c459f478ebbf902048382eda652a2b46a4d1 Mon Sep 17 00:00:00 2001 From: Ming Ming Date: Wed, 7 Apr 2021 21:28:01 +0800 Subject: [PATCH] Support webp extended format --- example/asset/demo_extended.webp | Bin 0 -> 125408 bytes library/lib/src/decoder/async/decoder.dart | 1 + .../lib/src/decoder/async/webp_decoder.dart | 23 ++++++++++++++---- library/lib/src/decoder/sync/decoder.dart | 1 + .../lib/src/decoder/sync/webp_decoder.dart | 23 ++++++++++++++---- library/test/image_size_getter_test.dart | 7 ++++++ 6 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 example/asset/demo_extended.webp diff --git a/example/asset/demo_extended.webp b/example/asset/demo_extended.webp new file mode 100644 index 0000000000000000000000000000000000000000..f8a83a1b2ebba10d5b4eba1705bdd5dc2261cc90 GIT binary patch literal 125408 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