Commit graph

215 commits

Author SHA1 Message Date
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