Ingvar Stepanyan
121558bf5c
Add libdeflater as an option ( #203 )
...
libdeflater is a Rust wrapper around
[libdeflate](https://github.com/ebiggers/libdeflate ) - an alternative
heavily optimised library for deflate/zlib/gzip compression and
decompression that is intended for situations where upper bounds of the
output are well-known.
In my benchmarks on test files in the repo it has shown to be usually
both slightly faster and providing better compressed output than
cloudflare-zlib, but in some cases showing the opposite, so rather
than swapping defaults, it's currently provided as another option,
similarly to zopfli.
Since it's not strictly better in all cases, I'm not providing median
numbers, but you can check distribution histograms for time and size
differences here (all using `oxipng -o 6 -t 6 -P`):
https://docs.google.com/spreadsheets/d/1WOKgeYZBhLkQvMGAC36snN4azilElzOFhx63RJu0EZY/edit?usp=sharing
2020-03-31 20:24:57 -04:00
Kornel
681089f8c7
Remove the concept of size bias ( #199 )
...
Closes #198
2020-03-31 19:28:22 -04:00
Josh Holmer
bded03908f
Silence cognitive complexity warnings
2020-03-02 01:45:04 -05:00
Josh Holmer
b9dc9e72bb
Update image crate to 0.23
2020-03-02 01:44:53 -05:00
Josh Holmer
0e3c0b922d
Enable more clippy lints and fix some clippy issues
2020-01-19 05:22:14 -05:00
Josh Holmer
139d29cc9b
Version 2.3.0
2019-10-07 23:34:23 -04:00
Ingvar Stepanyan
659717cb1f
Allow usage on wasm32-unknown-unknown target ( #194 )
...
* Avoid using time API when we don't need it
This avoids a syscall to the time API when the result is ignored later anyway.
This allows to use the library with default options on wasm32-unknown-unknown, where the unimplemented syscall would panic otherwise.
* eval_send doesn't need to be an Option
We can drop the value manually, thus avoiding unwrap on each access.
* Keep single `use rayon::prelude::*`
If either `rayon` is already imported, then `rayon::prelude::*` should always resolve.
* Extract comparator
* Fully enable non-parallel mode
2019-09-25 13:01:53 -04:00
Kamal Ahmad
68db304a2a
Don't apply alpha optimizations unless --alpha is paseed ( #187 )
...
Closes #164
2019-09-24 11:33:50 -04:00
Kornel
e473958377
Palette sorting ( #193 )
...
* Implement alpha and luminosity palette sorting
* Also sort when reducing to palette
* Bump Rust version
* Color comparison
2019-09-10 18:13:05 -04:00
Kamal Ahmad
68b763bcdd
Reduce alloc in filtering/unfiltering by reusing buffers ( #191 )
2019-09-04 11:09:54 -04:00
Felix Hanau
4adcc5e14a
Interlacing fixes ( #182 )
...
* Fix decoding interlaced images with height or width <= 2
* Add Issue 175 test case
* Deinterlace tiny images correctly
2019-07-24 09:16:13 -04:00
Daniel Wong
4cb26d462e
Allow disabling all alpha optimizations ( #181 )
...
Fixes a bug where oxipng would crash if alpha optimizations were all disabled.
2019-07-23 14:21:46 -04:00
Kamal Ahmad
34ee78dbbc
Preallocate memory in reduced_alpha_to_up ( #180 )
2019-06-27 13:44:49 -04:00
Felix Hanau
56b94542a6
Fix decoding interlaced images with height or width <= 2 ( #175 )
2019-06-27 13:44:34 -04:00
Felix Hanau
c09e8f6d12
Make filter, zlib level and strategy deterministic ( #179 )
2019-06-27 10:05:35 -04:00
Josh Holmer
458e9f64a7
Fix --strip safe which was broken in 5b1121c9d
2019-06-19 15:27:43 -04:00
Josh Holmer
5b1121c9dd
Make order of chunks deterministic by sorting chunks
...
Closes #174
2019-06-18 13:29:17 -04:00
Felix Hanau
5dcfe44ccd
Fix info message and typos ( #172 )
2019-06-18 13:06:37 -04:00
Felix Hanau
cc290c0bdb
Fixes for grey scale reduction ( #171 )
2019-06-18 13:04:26 -04:00
Josh Holmer
d86bc80f43
Prepare for next release
2019-02-01 17:27:03 -05:00
Kornel
485a127cf6
Remove Mutex from evaluation loop ( #163 )
2019-02-01 17:03:25 -05:00
Kornel
dad6230cf1
Check timeout more often during compression ( #160 )
2019-02-01 16:30:47 -05:00
Kornel
33890cf0fd
Fake Rayon ( #162 )
...
Dummy implementation of Rayon's traits to avoid `#[cfg()]` and duplicated non-parallel code.
2019-01-28 13:35:42 -05:00
Kornel
0d4a9e06d6
Avoid using excessive number of threads ( #161 )
2019-01-27 04:15:41 -05:00
Kornel
9af874d21b
Make reductions return a new uncompressed image ( #158 )
...
* Fix verbose message
* No cloning when restoring original data
* Make reductions return a new uncompressed image
Partially fixes #145
* Async reduction evaluator
* Assert
* Faster bit depth check
* Also try 4-bit depth for small-depth images
* Skip test when using miniz
* Ensure palette is trimmed after depth reduction
Fixes #159
* Fudge factor for reductions to prefer better reductions even if gzip estimation says otherwise
2019-01-27 03:22:49 -05:00
Kornel
55d85df9fc
Non-self-mutable reductions ( #154 )
...
* Move reductions to a module. Make copy instead of changing in-place.
* Alpha reductions
* Immutable color reductions
* Immutable interlace reductions
2019-01-12 05:07:57 -05:00
Josh Holmer
918c52eed8
Fix more nonstandard sBIT headers
...
Closes #153
2018-12-02 00:13:30 -05:00
Joshua Holmer
1305b5cf17
Fix clippy lints and run rustfmt
2018-11-26 13:41:14 -05:00
Joshua Holmer
041c433ccb
Handle non-standard sBIT headers
...
Closes #141
2018-11-26 13:10:21 -05:00
Kornel
ff7a9547c3
Nicer wrapper for cfzlib ( #149 )
2018-11-25 03:29:30 -05:00
Kornel
602cd6991e
80× faster palette reduction ( #150 )
...
* Faster palette reduction
* Simplified iterator
* Mutable scanline iterator
2018-11-25 01:31:43 -05:00
Kornel
686adcdebd
Optimize RGB/A to palette conversion ( #148 )
2018-11-22 21:52:02 -05:00
Kornel
588d5bd52b
Tweaks and Microoptimizations ( #146 )
...
* Fixed alpha benchmark
* Dedupe function
* Use integer math when rounding
* Fewer temporaries when slicing palette
* Filtering microoptimizations
2018-11-20 08:39:46 -05:00
Kornel
4765eaa7f3
Alpha heuristic improvements ( #144 )
...
* Compress alpha with strategy sensitive to repetitions
* Update reductions flag when alpha changed
* Avoid needlessly cloning out-of-date idat_data and temp raw_data
2018-11-14 08:30:15 -05:00
Kornel
96eda85806
Identify and drop useless sRGB profiles ( #143 )
2018-11-13 14:37:02 -05:00
Joshua Holmer
87e738dda2
Fix incorrect detection of images that can reduce bit depth
...
Closes #140
2018-10-11 08:29:48 -04:00
Josh Holmer
903f962f29
Version 2.1.4
2018-09-28 21:05:58 -04:00
Josh Holmer
a4e0a34357
Bump version to 2.1.3
2018-09-16 23:21:51 -04:00
Kornel
3c466df80e
Chunk name as 4 bytes ( #135 )
2018-09-16 16:09:55 -04:00
Josh Holmer
edd4966cea
Fix compilation error on i686 due to cfzlib incompat ( #138 )
...
Closes #137
2018-09-16 14:43:08 -04:00
Kornel
72393d06c9
Parallel loading ( #136 )
...
* Parallel loading
* Avoid vec allocation per pixel
2018-09-15 17:30:53 -04:00
Josh Holmer
bb1737928e
Fix RGB to Indexed reduction if transparency pixel exists
...
Closes #129
2018-08-11 23:33:55 -04:00
Josh Holmer
7895e42687
Version 2.1.1
2018-08-11 20:34:04 -04:00
Josh Holmer
71d0f6fa31
Fix more issues with alpha optim on interlaced images
...
Closes #133
2018-08-11 20:27:45 -04:00
Josh Holmer
3b42f42491
Revert "Revert "Make cfzlib the default on platforms that support it""
...
This reverts commit ff0e3df948 .
2018-08-04 23:08:30 -04:00
Kornel
1322416ba4
Cleanup on error ( #132 )
...
Closes #126
2018-08-04 23:02:56 -04:00
Matthias Krüger
947ccaad04
fix more clippy warnings found by "cargo clippy --all-targets --all-features" ( #130 )
2018-08-02 23:19:42 -04:00
Josh Holmer
f862a0df24
Apply clippy fixes
2018-07-28 16:51:54 -04:00
Matthias Krüger
868fd502b9
reduce_alpha_to_up(): simplify code, don't convert Vec -> iter -> Vec in order to reverse elts, just vec.reverse(). ( #127 )
2018-07-28 11:19:56 -04:00
Josh Holmer
7303b94afc
Fix issue with alpha optim on interlaced images
...
Closes #113
2018-07-27 23:03:36 -04:00
Josh Holmer
ff0e3df948
Revert "Make cfzlib the default on platforms that support it"
...
This reverts commit 2702145f3f .
cfzlib seems to have a MASSIVE memory leak in it. Trying to use it
when processing many files at once will cause your system to run out
of memory.
Closes #125
2018-07-21 00:37:57 -04:00
Josh Holmer
d110949d2a
Version 2.0.0
2018-07-20 19:19:20 -04:00
Josh Holmer
2702145f3f
Make cfzlib the default on platforms that support it
...
Raises the minimum Rust version to 1.27.0
2018-07-20 19:03:17 -04:00
Josh Holmer
b235e5601f
Remove deprecated clippy plugin, use rustup clippy now
2018-07-20 18:50:27 -04:00
Kornel
76a2e51c15
Reduce allocations ( #122 )
...
* Iterate with fewer temp allocations
* Avoid allocation when not reducing
* Avoid slow modulo
2018-07-20 18:40:51 -04:00
Kornel
c530bba261
--keep option ( #121 )
2018-07-17 23:55:21 -04:00
Kornel
c99b3778b2
Expose only one internal module specifically for tests ( #123 )
...
Closes #98
2018-07-17 23:38:11 -04:00
Kornel
efde5747c4
Parse without temporary allocation ( #119 )
2018-07-15 09:11:26 -04:00
Josh Holmer
ebd94934a5
Make PngError non-exhaustive for forward compatibility
2018-07-14 15:45:25 -04:00
Kornel
e1cf3bf54b
Display options together, in source order ( #120 )
2018-07-14 15:28:47 -04:00
Kornel
cb52d8466a
Reading from stdin ( #118 )
2018-07-12 07:54:06 -04:00
Kornel
24735b6ab3
Option to limit wall clock time spent on optimization trials ( #115 )
2018-07-12 07:40:11 -04:00
Kornel
d2b1d56e8b
Improved limiting of max gzip size ( #116 )
2018-07-10 22:36:43 -04:00
Kornel
67fd229f20
CLI args value names ( #114 )
2018-07-10 18:42:55 -04:00
Kornel
55a095d536
Enum for stdout writing flag ( #110 )
2018-07-10 18:41:06 -04:00
myfreeweb
ae65e4be8d
Make Rayon an optional dependency ( #112 )
...
On WebAssembly, Rayon does not work (thread pool fails to initialize since threads are stubbed out).
2018-07-06 10:50:36 -04:00
Kornel
2d303f5dc2
Avoid double glob processing on unix ( #111 )
2018-07-06 08:11:42 -04:00
Kornel
442eaf766c
Bail early ( #104 )
2018-06-08 00:09:22 -04:00
Kornel
3e5b61e0c8
Compare images without allocating memory ( #107 )
2018-06-06 21:59:43 -04:00
magicgoose
5570a24781
allow listing more than 2 filters ( #105 )
...
Closes #101
2018-06-06 21:10:20 -04:00
Kornel
e472c82876
Option to use Cloudflare's zlib for compression ( #103 )
...
Behind the nightly feature flag for now--stable ASM is coming in Rust 1.27
2018-06-04 15:39:51 -04:00
Josh Holmer
d7369707ba
Fix a change that breaks itertools with newer versions of Rust nightly
2018-03-04 23:47:06 -05:00
Josh Stone
6f123c6382
Update to rayon 1.0
2018-02-20 14:14:45 -08:00
Josh Holmer
3d643b16b2
Adjust spacing in help command
2018-01-31 14:10:03 -05:00
Josh Holmer
d614bba3ac
Adjust command line presets to take advantage of the 50% speedup gained by removing memory options
2018-01-31 14:07:03 -05:00
Josh Holmer
66c1662537
Remove unused libc dependency
2018-01-30 23:54:30 -05:00
Josh Holmer
fe9cd01b82
Replace miniz_sys with miniz_oxide, a Rust implementation of miniz
...
This also improves decompression performance by 15%, and obsoletes the
`--zm` parameter.
Closes #57
2018-01-30 23:52:37 -05:00
Josh Holmer
0c2e3777b1
Refactor an if statement
2018-01-30 22:27:34 -05:00
Josh Holmer
348c7dbc56
Extract a function into a submodule
2018-01-30 22:21:31 -05:00
Josh Holmer
3497040b78
Remove useless annotation
2018-01-30 22:18:22 -05:00
Josh Holmer
cf5b90b444
Preallocate vector on reading in file
...
Provides 1.5% overall speedup on -o4
2018-01-30 22:15:03 -05:00
Josh Holmer
eb739c9ff9
Implement unix-specific permissions copying
...
Closes #4
2018-01-30 10:13:29 -05:00
Josh Holmer
ece85e6d15
Refactoring of internal code into smaller chunks.
...
There is still more to be done.
2018-01-30 09:35:03 -05:00
Josh Holmer
aa8b58628e
Fix spacing of line breaks in the rendered documentation
...
Closes #94
2018-01-18 17:30:51 -05:00
Josh Holmer
e3ba535a79
Add some changes and fixes around how the output file is handled
...
See changelog for details
2018-01-10 20:54:15 -05:00
Josh Holmer
d204427f73
Refactor options presets
2018-01-10 11:22:52 -05:00
Josh Holmer
88f5bb0931
Hide modules from documentation, and only export structs used in options or return types
2018-01-10 10:37:01 -05:00
Josh Holmer
fe9fd95b21
Update some old documentation
2018-01-10 10:26:12 -05:00
Josh Holmer
32e3d245f9
Run latest rustfmt
2017-12-27 17:21:21 -05:00
Josh Holmer
bb6a2513eb
Return exit code of 1 if error occurs while processing a file using the CLI
...
Closes #93
2017-12-27 17:20:12 -05:00
Josh Holmer
f8c62de6c0
Fix unfiltering of first scan line in each pass of an interlaced input file
...
Closes #92
2017-12-23 00:36:41 -05:00
Josh Holmer
4d62f9f7f9
Fix failure to optimize on certain grayscale images
...
Closes #89
2017-11-21 12:38:33 -05:00
Josh Holmer
9c7fdfd9d1
Fix parsing of glob paths on Windows
...
Closes #90
2017-11-06 19:01:18 -05:00
Josh Holmer
fa334e0750
Update dependencies
2017-11-06 18:50:10 -05:00
Emiel Beinema
b417e2bde7
Return an error when an APNG header is encountered
2017-09-30 23:50:52 +02:00
Emiel Beinema
4711cd6620
Check header of file before loading it in memory
2017-09-27 14:22:33 +02:00
Josh Holmer
e17f911334
Fix a bug in palette reduction at less than 8 bits per pixel
...
Closes #82
2017-09-11 18:27:28 -04:00
Josh Holmer
e3a26b77a4
Fix a bug in reducing palettes with a bit depth of two
...
Closes #80
2017-09-10 23:26:39 -04:00
Josh Holmer
0db03c6faf
Fix new clippy lints
2017-09-03 23:36:38 -04:00
Josh Holmer
ec65bf7676
Code cleanup
2017-07-26 07:57:13 -04:00
Josh Holmer
f41ef551d3
Enable option for multiple alpha transformations
2017-07-26 00:37:55 -04:00
Josh Holmer
413f1aac7c
Automatically change transparent pixels to black
2017-07-24 08:47:27 -04:00
Josh Holmer
19405cabd6
Fix help text
...
Closes #70
2017-07-01 10:10:26 -04:00
SethDusek
cf3789564e
Make error module public
2017-06-19 07:21:43 +05:00
Josh Holmer
5f4ddbb8f4
Upgrade dependencies
2017-06-14 18:28:07 -04:00
Josh Holmer
ed3b843dd2
Update rayon and itertools dependencies
2017-05-02 19:29:20 -04:00
Josh Holmer
84cf6b09c2
Run rustfmt since it updated to v0.8.0.
...
I don't really like the new changes, but we might as well follow along.
2017-03-08 11:14:33 -05:00
Josh Holmer
d18850ebab
Ignore color reductions that would increase file size
...
Closes #61
2017-03-08 10:11:13 -05:00
Josh Holmer
6499933eab
Don't write larger file if moving from interlaced to non-interlaced
...
Closes #62
2017-03-07 09:58:23 -05:00
Josh Holmer
848a73723e
Minor changes from last commit
2017-03-06 22:20:11 -05:00
Josh Holmer
6c8e7d253d
Verify images are correct before outputting them, and fix a bug in certain images
...
Closes #60
2017-03-06 20:16:28 -05:00
Josh Holmer
c79ba3ab8a
Version 0.14.4
2017-02-26 22:53:23 -05:00
Josh Holmer
87810829ce
Fix issues in transparency palette reduction and release version 0.14.3
2017-02-25 23:33:55 -05:00
Josh Holmer
44818a854b
Fix two bugs in reducing palette and release version 0.14.2
2017-02-22 15:45:46 -05:00
Joshua Holmer
8e02aa8294
Remove zlib dependency, which broke with the new version of zlib
2017-02-21 21:45:53 -05:00
Josh Holmer
705d280f8b
Fix warning when clippy not enabled
2017-02-19 10:43:46 -05:00
Josh Holmer
ce2d166de2
Allow cyclomatic complexity on parse_opts function, there's no reasonable way to split this up
...
Closes #26
2017-02-15 13:01:17 -05:00
Josh Holmer
8116d69c3c
Minor optimizations
2017-01-10 08:11:10 -05:00
Josh Holmer
f4b643d54b
Fix clippy lints, now that clippy is working again. Hooray!
2016-12-16 21:24:47 -05:00
Josh Holmer
7261fa3398
Release 0.13.0
2016-12-12 13:54:18 -05:00
Josh Holmer
2810316f4e
Reduce certain headers when reducing color type
...
Fixes #52
2016-12-12 09:57:18 -05:00
Josh Holmer
33f1fad711
Minor refactoring
2016-12-03 15:18:11 -05:00
Joshua Holmer
bf341dd20f
Fix clippy warnings
2016-12-01 22:33:38 -05:00
Josh Holmer
6d49d7b8f9
Implement zopfli compression, available as a CLI flag (-Z)
...
Improves compression by about 10% over DEFLATE, but takes a very long
time at the moment, so it is off by default.
2016-12-01 12:51:30 -05:00
Alice Atlas
7460ffac73
Fix for passing in filenames that contain commas
...
The versions of clap supported by oxipng default to allowing commas to be used as a delimiter for passing a series of values in a single physical command line argument, when parsing for a parameter that accepts multiple values. This prevents oxipng from accepting filenames containing commas (it splits them into segments separated by commas and treats each one as a separate path to a file to process, generally not finding any); this patch fixes this by disabling the delimiter behavior for the 'files' argument.
2016-09-19 18:13:24 -04:00
Josh Holmer
4977dd0948
Replace current Mutex-based threading with Rayon
2016-09-17 18:16:26 -04:00
Josh Holmer
f654cbeac4
Various minor changes
2016-09-09 21:55:47 -04:00
Josh Holmer
4da65aef3f
Add clone derive for PngError
2016-09-09 08:05:24 -04:00
Josh Holmer
e0dfbf3533
Enable clippy with dev feature, and fix several clippy lints
2016-08-20 20:47:26 -04:00
Josh Holmer
dbc3d97513
Eliminate many clones
2016-08-19 23:42:04 -04:00
Josh Holmer
d99db3ad23
Convert results to return a PngError
...
Closes #44
2016-08-16 12:38:09 -04:00
Josh Holmer
3166285150
Allow using optimization presets from crate
...
Closes #43
2016-08-14 11:31:46 -04:00
Josh Holmer
58a36902f6
Fix tests
2016-08-03 08:27:45 -04:00
Josh Holmer
37c32b80ef
Remove quickcheck, as it breaks tests against 1.6.0
2016-08-03 08:15:01 -04:00
Josh Holmer
64edc9110e
Start using quickcheck and add inline hints
2016-07-30 23:14:36 -04:00
Josh Holmer
99da13bd8e
Version 0.10.0 [ci skip]
2016-07-26 12:59:28 -04:00
Josh Holmer
fa2b5c4ae5
Remove conversion from palette to grayscale
...
Closes #45
2016-07-26 12:32:43 -04:00
Josh Holmer
29557a18e8
Version 0.9.0
2016-07-14 20:00:59 -04:00
Josh Holmer
7734a9ffff
Use multiple threads to filter
2016-07-14 19:47:47 -04:00
Josh Holmer
7f9ad263ec
Refactor code into modules
2016-07-14 11:10:10 -04:00
Josh Holmer
332c27c7d0
Significant refactoring using itertools
2016-07-14 08:10:25 -04:00
Joshua Holmer
2659776bd5
Fix issue for interlacing images smaller than 4px
...
Fixes #42
2016-05-25 23:10:44 -04:00
Joshua Holmer
223995b551
Version 0.8.1 [ci skip]
2016-05-13 22:12:27 -04:00
Joshua Holmer
ecc19ad5cd
Fix bug where interlaced images with certain widths would fail to optimize
2016-05-13 22:11:45 -04:00
Joshua Holmer
1d39714b0f
Fix several new clippy lints
2016-05-13 10:46:16 -04:00
Joshua Holmer
0ddd875c84
Document default values for Options struct [ci skip]
2016-05-06 10:10:34 -04:00
Joshua Holmer
8358f4f72d
Version 0.8.0 [ci skip]
2016-05-06 10:00:02 -04:00
Joshua Holmer
566675f0b6
Improve documentation of private API [ci skip]
2016-05-05 15:44:03 -04:00
Joshua Holmer
042e3e2563
Fix new warnings from clippy
2016-05-05 13:40:24 -04:00
Toby Lawrence
bc7de9b734
Add documentation to new public methods for optimizing in-memory.
2016-05-05 12:21:31 -04:00
Toby Lawrence
2573b20966
Add support for optimizing PNGs loaded in-memory.
...
In keeping with being able to use oxipng as a library, this adds a way
for developers to optimize a PNG already in memory, instead of requiring
it to exist on disk first.
2016-05-05 07:54:52 -04:00
Joshua Holmer
193e6496bd
Version 0.7.0
2016-05-04 10:41:29 -04:00
Joshua Holmer
3a39b13acf
Add option for changing number of threads at runtime
...
Closes #39
2016-05-04 10:37:45 -04:00
Joshua Holmer
e4cd9b85e7
Move default Options into impl Default in library
2016-05-04 10:09:26 -04:00
Joshua Holmer
aaf443fca7
Similarly optimize unfilter mode 2
...
Unfilter mode 1 can't benefit from this optimization
because it modifies and reads from the same line of data
2016-05-02 15:58:45 -04:00
Joshua Holmer
3652a69255
Optimize filter mode 1
2016-05-02 15:48:21 -04:00
Joshua Holmer
32c35596ea
25% speed improvement in filter mode 2 by using iter instead of for
2016-05-02 14:49:30 -04:00
Joshua Holmer
c0fddfe4e6
Minor compression improvement in interlaced images
2016-05-02 13:54:04 -04:00
Joshua Holmer
b8116dd3dd
Version 0.6.0 [ci skip]
2016-05-02 09:40:37 -04:00
Joshua Holmer
a4a5953786
Implement --fix to fix CRC errors in PNG block headers
...
Closes #5
2016-05-02 09:25:48 -04:00
Joshua Holmer
08eb44ec1a
Partially implement --preserve
...
Needs better implementation once stable Rust improves,
or perhaps see if there's a crate for this
Reference #4 but keep open
2016-04-29 23:37:27 -04:00
Joshua Holmer
73d477924e
Merge branch 'master' of github.com:shssoichiro/oxipng
2016-04-22 13:37:41 -04:00
Joshua Holmer
2c3e35d8bb
Moderately improve cyclomatic complexity
2016-04-22 13:31:59 -04:00
Joshua Holmer
fac83c023d
Fix issue where output directory would not be created if it did not exist
2016-04-22 13:31:33 -04:00
Joshua Holmer
f3b8665278
Use miniz for compression strategies 0 and 1
...
Worst case (RGB/A images) it performs similarly to zlib
Best case (Indexed images) it performs 1-2 orders of magnitude better
Zlib is kept for strategies 2 and 3, where it performs an order of
magnitude better than miniz
2016-04-20 23:14:41 -04:00
Joshua Holmer
11308959fa
Version 0.5.0 [ci skip]
2016-04-20 15:51:14 -04:00
Joshua Holmer
3f3fbb6f60
Don't report pretend mode if verbosity is set to none
2016-04-19 22:38:34 -04:00
Joshua Holmer
2e7bfa4ebc
Add palette reduction
...
Closes #11
2016-04-13 23:16:32 -04:00
Joshua Holmer
ea484a8978
Version 0.4.0
2016-04-08 13:52:15 -04:00
Joshua Holmer
c78e3213d6
Update crates and fix interlacing issue
2016-04-08 13:37:00 -04:00
Josh Holmer
e9c44cbc0b
Add -s as alias for --strip safe
...
Fixes #31
2016-04-08 11:56:51 -04:00
Joshua Holmer
1d0ce6fca8
Performance optimizations
...
Interlacing performance increased by about 50%
Various other minor optimizations throughout the program
2016-04-05 12:08:47 -04:00
Joshua Holmer
9302caed59
Optimize filter mode 5 SAD loop
2016-04-05 10:52:02 -04:00
Joshua Holmer
548c69cad7
Version 0.3.0 [ci skip]
2016-04-04 20:23:24 -04:00
Joshua Holmer
1fc81ef683
Support interlaced files and allow conversion between interlaced and progressive files
...
Closes #3
2016-04-04 16:07:46 -04:00
Joshua Holmer
2974bbbee3
Fix issue with very small images [ci skip]
2016-04-04 11:06:00 -04:00
Joshua Holmer
7280ca80ce
Fix issues with 2-bit and 1-bit per pixel interlaced images [ci skip]
2016-03-30 21:42:33 -04:00
Joshua Holmer
5740867be5
Work on implementing interlacing [ci skip]
2016-03-29 22:44:21 -04:00
Joshua Holmer
489964add2
Release v0.2.2 [ci skip]
2016-03-21 12:28:20 -04:00
Joshua Holmer
c1031b1ddd
Merge branch 'master' of github.com:shssoichiro/oxipng
2016-03-21 12:15:09 -04:00
Joshua Holmer
85ea2c21e5
Remove FIXME sections from code
...
One section can't be improved from what I can gather,
because we have to iterate the number of bits per pixel in advance.
The output section has been refactored to pull the block writing code
into a separate function.
Fixes #19
2016-03-21 12:14:22 -04:00
Joshua Holmer
132a15403a
Don't store intermediate copies of compressed image data unless it is current best.
...
Reduces peak memory usage significantly.
2016-03-19 10:42:03 -04:00
Joshua Holmer
87e21c2020
Limit number of simultaneous threads to help memory usage at high opt levels
...
Still uses a lot of memory. Would like to remove the storage of all compression
data attempts and calculate the best immediately during each thread.
2016-03-19 02:07:31 -04:00
Joshua Holmer
262bbf003a
Release version 0.2.1 [ci skip]
2016-03-10 14:50:35 -05:00
Joshua Holmer
f1e65067f6
Improve best-filter-per-line heuristic used in filter mode 5
...
Fixes #16
2016-03-10 14:23:03 -05:00
Joshua Holmer
eba8062ba5
Add documentation to publicly visible areas of lib
...
Fixes #17
2016-03-08 11:59:37 -05:00
Joshua Holmer
911f51faa9
Version 0.2.0 [ci skip]
2016-03-05 22:55:01 -05:00
Joshua Holmer
b889c73a3b
Make --strip option more versatile
...
Closes #22
2016-03-05 22:36:31 -05:00
Joshua Holmer
7d1e3a5bb9
Print console output to stderr instead of stdout
...
Makes it friendlier with --stdout option
See #20 for discussion
2016-03-04 16:37:40 -05:00
Joshua Holmer
0ae632c7f4
Revert "Enable quiet when stdout is selected"
...
This reverts commit 849d36ec6c .
2016-03-04 16:03:33 -05:00
Joshua Holmer
c6452beb12
Select compression and filter modes heuristically for -o1
...
Closes #21
2016-03-04 15:24:58 -05:00
Joshua Holmer
849d36ec6c
Enable quiet when stdout is selected
2016-03-04 14:20:47 -05:00
SethDusek
d218d37944
Actually be quiet
2016-03-04 21:38:26 +05:00
Joshua Holmer
9a6379ac7e
Fix version string from -V
2016-03-04 10:07:43 -05:00
Joshua Holmer
abedfc9c70
Each input file should output to its own file correctly
...
Fixes #15
2016-03-03 16:30:05 -05:00
Joshua Holmer
9a8c3f64b9
Fix alternative filter modes
...
Fixes #9
2016-03-03 13:52:52 -05:00
Joshua Holmer
3963f8da0a
Prefer unreachable over panic where appropriate
2016-03-02 14:16:34 -05:00
Joshua Holmer
9fa55ae34a
Fix all bit depth and color reduction tests
...
Closes #8
2016-03-02 12:40:56 -05:00
Joshua Holmer
6f1a87160a
Fix all existing color reduction tests
...
Fixes #1
2016-02-23 13:28:39 -05:00
Joshua Holmer
d2cd105b1a
Fix most of rgba tests
2016-02-22 22:40:17 -05:00