Merge branch 'master' into pre_commit
This commit is contained in:
commit
f2a4d74adf
6 changed files with 117 additions and 125 deletions
2
.github/workflows/oxipng.yml
vendored
2
.github/workflows/oxipng.yml
vendored
|
|
@ -19,7 +19,7 @@ jobs:
|
||||||
- x86_64-apple-darwin
|
- x86_64-apple-darwin
|
||||||
toolchain:
|
toolchain:
|
||||||
# Minimum stable
|
# Minimum stable
|
||||||
- "1.46.0"
|
- "1.56.0"
|
||||||
- stable
|
- stable
|
||||||
- beta
|
- beta
|
||||||
- nightly
|
- nightly
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
### Next
|
### Next
|
||||||
|
|
||||||
|
- [Breaking] Bump minimum Rust version to 1.56.0
|
||||||
- [Misc] Bump `clap` to 3.0.0
|
- [Misc] Bump `clap` to 3.0.0
|
||||||
- [Misc] Bump `zopfli` to 0.5.0
|
- [Misc] Bump `zopfli` to 0.5.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,14 @@ authors = ["Joshua Holmer <jholmer.in@gmail.com>"]
|
||||||
categories = ["command-line-utilities", "compression"]
|
categories = ["command-line-utilities", "compression"]
|
||||||
description = "A lossless PNG compression optimizer"
|
description = "A lossless PNG compression optimizer"
|
||||||
documentation = "https://docs.rs/oxipng"
|
documentation = "https://docs.rs/oxipng"
|
||||||
edition = "2018"
|
edition = "2021"
|
||||||
exclude = ["tests/*", "bench/*"]
|
exclude = ["tests/*", "bench/*"]
|
||||||
homepage = "https://github.com/shssoichiro/oxipng"
|
homepage = "https://github.com/shssoichiro/oxipng"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
name = "oxipng"
|
name = "oxipng"
|
||||||
repository = "https://github.com/shssoichiro/oxipng"
|
repository = "https://github.com/shssoichiro/oxipng"
|
||||||
build = "build.rs"
|
|
||||||
version = "5.0.1"
|
version = "5.0.1"
|
||||||
rust-version = "1.46.0"
|
rust-version = "1.56.0"
|
||||||
|
|
||||||
[badges]
|
[badges]
|
||||||
travis-ci = { repository = "shssoichiro/oxipng", branch = "master" }
|
travis-ci = { repository = "shssoichiro/oxipng", branch = "master" }
|
||||||
|
|
|
||||||
13
README.md
13
README.md
|
|
@ -17,12 +17,14 @@ Oxipng for Windows can be downloaded from the [Releases](https://github.com/shss
|
||||||
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
||||||
|
|
||||||
Alternatively, oxipng can be installed from Cargo, via the following command:
|
Alternatively, oxipng can be installed from Cargo, via the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo install oxipng
|
cargo install oxipng
|
||||||
```
|
```
|
||||||
|
|
||||||
Oxipng can be built from source using the latest stable or nightly Rust.
|
Oxipng can be built from source using the latest stable or nightly Rust.
|
||||||
This is primarily useful for developing on oxipng.
|
This is primarily useful for developing on oxipng.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/shssoichiro/oxipng.git
|
git clone https://github.com/shssoichiro/oxipng.git
|
||||||
cd oxipng
|
cd oxipng
|
||||||
|
|
@ -30,7 +32,7 @@ cargo build --release
|
||||||
cp target/release/oxipng /usr/local/bin
|
cp target/release/oxipng /usr/local/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
The current minimum supported Rust version is **1.46.0**.
|
The current minimum supported Rust version is **1.56.0**.
|
||||||
|
|
||||||
Oxipng follows Semantic Versioning.
|
Oxipng follows Semantic Versioning.
|
||||||
|
|
||||||
|
|
@ -43,17 +45,18 @@ oxipng -o 4 -i 1 --strip safe *.png
|
||||||
```
|
```
|
||||||
|
|
||||||
The most commonly used options are as follows:
|
The most commonly used options are as follows:
|
||||||
* Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
|
||||||
|
- Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
||||||
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
||||||
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
||||||
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
||||||
to give any extra compression gains and is not recommended.
|
to give any extra compression gains and is not recommended.
|
||||||
* Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
- Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
||||||
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
||||||
processed images. Not specifying either will keep the same interlacing state as the
|
processed images. Not specifying either will keep the same interlacing state as the
|
||||||
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
||||||
it if you believe the benefits outweigh the costs for your use case.
|
it if you believe the benefits outweigh the costs for your use case.
|
||||||
* Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
- Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
||||||
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
||||||
will never affect rendering of the image. "All" removes all metadata that is not critical
|
will never affect rendering of the image. "All" removes all metadata that is not critical
|
||||||
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
||||||
|
|
@ -99,7 +102,6 @@ Oxipng is open-source software, distributed under the MIT license.
|
||||||
|
|
||||||
Tested oxipng 5.0.0 (compiled on rustc 1.55.0-nightly (7a16cfcff 2021-07-11)) against OptiPNG version 0.7.7 on AMD Ryzen 7 4800H with Radeon Graphics with 16 logical cores
|
Tested oxipng 5.0.0 (compiled on rustc 1.55.0-nightly (7a16cfcff 2021-07-11)) against OptiPNG version 0.7.7 on AMD Ryzen 7 4800H with Radeon Graphics with 16 logical cores
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Benchmark #1: ./target/release/oxipng -P ./tests/files/rgb_16_should_be_grayscale_8.png
|
Benchmark #1: ./target/release/oxipng -P ./tests/files/rgb_16_should_be_grayscale_8.png
|
||||||
|
|
@ -129,4 +131,3 @@ Summary
|
||||||
5.16 ± 0.58 times faster than 'optipng -o 4 -simulate ./tests/files/rgb_16_should_be_grayscale_8.png'
|
5.16 ± 0.58 times faster than 'optipng -o 4 -simulate ./tests/files/rgb_16_should_be_grayscale_8.png'
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,14 @@ Oxipng for Windows can be downloaded from the [Releases](https://github.com/shss
|
||||||
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
||||||
|
|
||||||
Alternatively, oxipng can be installed from Cargo, via the following command:
|
Alternatively, oxipng can be installed from Cargo, via the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo install oxipng
|
cargo install oxipng
|
||||||
```
|
```
|
||||||
|
|
||||||
Oxipng can be built from source using the latest stable or nightly Rust.
|
Oxipng can be built from source using the latest stable or nightly Rust.
|
||||||
This is primarily useful for developing on oxipng.
|
This is primarily useful for developing on oxipng.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/shssoichiro/oxipng.git
|
git clone https://github.com/shssoichiro/oxipng.git
|
||||||
cd oxipng
|
cd oxipng
|
||||||
|
|
@ -30,7 +32,7 @@ cargo build --release
|
||||||
cp target/release/oxipng /usr/local/bin
|
cp target/release/oxipng /usr/local/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
The current minimum supported Rust version is **1.46.0**.
|
The current minimum supported Rust version is **1.56.0**.
|
||||||
|
|
||||||
Oxipng follows Semantic Versioning.
|
Oxipng follows Semantic Versioning.
|
||||||
|
|
||||||
|
|
@ -43,17 +45,18 @@ oxipng -o 4 -i 1 --strip safe *.png
|
||||||
```
|
```
|
||||||
|
|
||||||
The most commonly used options are as follows:
|
The most commonly used options are as follows:
|
||||||
* Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
|
||||||
|
- Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
||||||
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
||||||
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
||||||
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
||||||
to give any extra compression gains and is not recommended.
|
to give any extra compression gains and is not recommended.
|
||||||
* Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
- Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
||||||
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
||||||
processed images. Not specifying either will keep the same interlacing state as the
|
processed images. Not specifying either will keep the same interlacing state as the
|
||||||
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
||||||
it if you believe the benefits outweigh the costs for your use case.
|
it if you believe the benefits outweigh the costs for your use case.
|
||||||
* Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
- Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
||||||
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
||||||
will never affect rendering of the image. "All" removes all metadata that is not critical
|
will never affect rendering of the image. "All" removes all metadata that is not critical
|
||||||
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
||||||
|
|
@ -96,4 +99,3 @@ Other contributions (such as improving documentation or translations) are also w
|
||||||
Oxipng is open-source software, distributed under the MIT license.
|
Oxipng is open-source software, distributed under the MIT license.
|
||||||
|
|
||||||
## Benchmarks
|
## Benchmarks
|
||||||
|
|
||||||
|
|
|
||||||
11
build.rs
11
build.rs
|
|
@ -1,11 +0,0 @@
|
||||||
use rustc_version::{version, Version};
|
|
||||||
use std::process::exit;
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
// This should match the version in Github Actions scripts and the Readme
|
|
||||||
const REQUIRED_VERSION: &str = "1.46.0";
|
|
||||||
if version().unwrap() < Version::parse(REQUIRED_VERSION).unwrap() {
|
|
||||||
eprintln!("oxipng requires rustc >= {}.", REQUIRED_VERSION);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue