Commit Graph

183 Commits

Author SHA1 Message Date
Ingvar Stepanyan
629d64326d Swap OptiPNG with OxiPNG
This makes building simpler and allows us to potentially use multithreading version in the future.

For now points to a custom fork of OxiPNG that enables WebAssembly support, as PR is still pending review.
2020-04-09 14:10:50 +01:00
Alon Zakai
d7fb0d9b40 Remove unneeded compile flags from imagequant 2020-02-28 13:03:51 -08:00
Alon Zakai
309947a08f Merge branch 'master' into closure2 2020-02-27 09:45:46 -08:00
Alon Zakai
6aeaae6160 Closure all the things 2020-02-27 09:44:28 -08:00
Alon Zakai
48c06e86fa Use closure in optpng build, which shrinks the JS to less than half. 2020-02-27 09:16:43 -08:00
Ingvar Stepanyan
570e604be0 optipng: switch to bundled zlib and libpng
Benefits:
 - newer versions of the libraries
    - zlib: 1.2.8 -> 1.2.11
	- libpng: 1.6.18beta04 -> 1.6.34
 - much fewer dependencies to install (as libs are already in optipng archive and we don't need napa)
 - much smaller build thanks to customised versions of zlib and libpng containing only APIs necessary for optipng itself: 238950 -> 177359 bytes
 - much faster build thanks to preconfigured libpng and stripped APIs: 2m15s -> 40s
 - much simpler build script: 77 -> 46 lines
2020-02-25 18:45:47 +00:00
Ingvar Stepanyan
a056d1c363 Switch to make to build optipng
Mostly a build config simplification for now, no noticeable changes in time or output size.
2020-02-25 18:20:05 +00:00
Ingvar Stepanyan
fce61c8c89 Switch to emscripten-upstream
Before: 255184 bytes, 2m15s
After: 238270 bytes, 2m6s
2020-02-25 17:14:16 +00:00
Ingvar Stepanyan
d60d0ae47d Update Emscripten (1.39.4) 2020-02-25 16:53:27 +00:00
Ingvar Stepanyan
7f6404d5a8 Delete .gitignore in resize codec 2019-08-05 15:13:40 +01:00
Ingvar Stepanyan
8e857cd393 Use native Wasm+Webpack support for Rust codecs
This delegates loading of Wasm modules to Webpack itself, making wrapper code simpler.

Emscripten-generated modules are still using custom loading glue as they're not compatible with Webpack.
2019-08-05 15:13:40 +01:00
Ingvar Stepanyan
b8f801333d Switch to prebuilt WABT and wasm-pack
Significantly speeds up `npm run build:image` commands (as they don't need to compile anything anymore) and slightly reduces size of Docker images:
 - `squoosh-rotate`: 1.87GB -> 1.84GB
 - `squoosh-resize`: 2.02GB -> 1.85GB
 - `squoosh-hqx`: 2.06GB -> 1.9GB
2019-08-02 17:23:09 +01:00
Ingvar Stepanyan
499956e216 Switch to stable Rust
Nightly is no longer necessary for wee_alloc, so we don't need to rely on unstable versions of Rust anymore.

As a bonus, this reduces size of each Rust-related Docker image by >1 GB:
 - `squoosh-rotate`: 2.94GB -> 1.87GB
 - `squoosh-resize`: 3.09GB -> 2.02GB
 - `squoosh-hqx`: 3.13GB -> 2.06GB
2019-08-02 16:14:44 +01:00
Ingvar Stepanyan
68177b7590 Rename resize package
Without this, it was creating files in `pkg` prefixed with `squooshresize`, which were ignored by Git.
2019-08-02 14:53:39 +01:00
Surma
0a2a4122dc Update build.sh 2019-08-02 12:47:12 +01:00
Mathias Bynens
3f8afb72a6 Fix nit 2019-06-19 14:44:23 +02:00
Jake Archibald
2f834db224 Quick doc fix 2019-06-19 13:02:59 +01:00
Jake Archibald
b6fae0eb4c Hqx fix (#629)
* Optimising wasm so it doesn't break Chrome

* Simpler dockerfile (thanks surma!)
2019-06-19 12:24:24 +01:00
Surma
66feffcc49 Add Hq{2,3,4}x (#624)
* Scaling works on native

* It works in wasm

* Integrate with UI

* Remove benchmark

* Integrate Hqx into Resizer module

* Link against repo for hqx

* Remove unused defaultOpts

* Re-add test file

* Adding size dropdown

* Chrome: go and sit on the naughty step

* Better docs

* Review

* Add link to crbug

* Update src/codecs/processor-worker/index.ts

Co-Authored-By: Jake Archibald <jaffathecake@gmail.com>

* Terminate worker inbetween resize jobs
2019-06-18 12:23:22 +01:00
Surma
bf4d4b78cb Implement sRGB color conversion (#510)
* Add sRGB -> RGB conversion before resize

* Add clamping for color space conversions

* Clip for demultiplication as well

* Fixing linear <-> srgb conversion

* Update benchmark

* Decouple srgb calculations

* Generate lookup tables

* Update src/codecs/resize/options.tsx

* Defaulting on, renaming, removing redundant state
2019-03-12 14:09:35 +00:00
Surma
45221c0b03 Implement alpha premultiplication (#507)
* Implement alpha premultiplication

* Add benchmark to resize

* Only display "Premultiply alpha" if it's one of the rust resize types.

* Add comment about division by zero
2019-03-08 11:18:59 +00:00
Jake Archibald
9e5b66d5f4 Better resize methods (#498)
* Port resize to wasm

* Expose resize algorithms

* Lanczos3 working!

* lol copy paste

* Adding support for other resizers

* Don’t track generated README

* Cache wasm instance
2019-03-06 17:20:25 +00:00
Surma
ba90517ad7 Remove baseline benchmark and switch to tile size 16 2019-02-21 15:16:26 +00:00
Joachim Viide
0e8c0da3dd Update the built rotate.wasm file 2019-02-21 15:16:26 +00:00
Joachim Viide
3132a207e1 Fix potential over-the-bounds slicing in rotate.rs 2019-02-21 15:16:26 +00:00
Joachim Viide
f507a2464f Update the built rotate.wasm file 2019-02-21 15:16:25 +00:00
Joachim Viide
14baa6ebf8 Reorganize rotate.rs, separate rotations into their own functions 2019-02-21 15:16:25 +00:00
Joachim Viide
5d32126565 Use iteration in rotate.rs whenever possible 2019-02-21 15:16:25 +00:00
Joachim Viide
484ff7ab4c Fix unwrap_hard when debug_assertions is set 2019-02-21 15:16:25 +00:00
Surma
36f86385a2 Update benchmark flags 2019-02-21 15:16:24 +00:00
Surma
436faa17af More conservative tiling size 2019-02-21 15:16:24 +00:00
Surma
d205ae206f Implement 180 and 270 2019-02-21 15:16:24 +00:00
Surma
6baa5900fc Implement tiling 2019-02-21 15:16:24 +00:00
Surma
fadb53f075 Readd rotation cases 2019-02-21 15:16:24 +00:00
Surma
1a63387408 Use a trait to make it nicer 2019-02-21 15:16:23 +00:00
Surma
a316120b69 Switch to 8 byte offset 2019-02-21 15:16:23 +00:00
Surma
0d1e5ef119 Simplify rotation code to 90deg only 2019-02-21 15:16:23 +00:00
Surma
b49cfca39d Scriptify benchmark running 2019-02-21 15:16:23 +00:00
Surma
ab58df4c2c Benchmark all rotations 2019-02-21 15:16:22 +00:00
Surma
db20f10bd2 Write d8 benchmark using the baseline compiler 2019-02-21 15:16:22 +00:00
Surma
91e7c9c5ad Make Rust rotate code smaller (#462)
* Make Rust rotate code smaller

* Back on the rust happy path
2019-02-15 09:47:26 +00:00
Surma
9a35224535 Update wasm build 2019-02-11 16:22:29 +00:00
Surma
b6a8f7eeba Rotate implementation in Rust 2019-02-11 16:22:28 +00:00
Ewout ter Hoeven
cb16fb5437 Update libwebp to 1.0.2 (#439)
* Update package.json

* Update package.json

* Update README.md

* Update README.md

* Use cmake for libwebp

* Minimize libwebp
2019-02-05 15:45:03 +00:00
Mariko Kosaka
962d0928d3 Update README.md
closes #367
updating incorrect URL
2018-12-17 13:43:18 -05:00
Jake Archibald
d30a85fd48 Using use_argb conditionally 2018-12-17 10:21:30 +00:00
Jake Archibald
9260bed1b1 Fixing sharp & preprocess settings 2018-12-17 10:01:47 +00:00
renovate[bot]
f6106650b5 Pin dependencies 2018-12-13 13:20:33 +00:00
Simon VDB
44dd2ee808 Fix typo 2018-11-15 22:02:11 +01:00
Jake Archibald
f396a5b784 MozJPEG chroma subsampling and quality (#235)
* Adding chroma subsampling for mozjpeg

* Adding separate chroma quality.

* Preact sometimes removes the inline styles, this fixes it.

* Simplifying chroma subsample

* Adding comments
2018-11-06 13:46:52 +00:00