Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kchapelier/imgproc
An experimental and unpolished image processing utility for the command line
https://github.com/kchapelier/imgproc
Last synced: 24 days ago
JSON representation
An experimental and unpolished image processing utility for the command line
- Host: GitHub
- URL: https://github.com/kchapelier/imgproc
- Owner: kchapelier
- License: mit
- Created: 2017-08-12T18:17:05.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-08-13T09:41:40.000Z (about 7 years ago)
- Last Synced: 2024-10-12T18:16:06.268Z (about 1 month ago)
- Language: JavaScript
- Size: 6.75 MB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# imgproc
An experimental and unpolished image processing utility for the command line.
Allow to manipulate and combine up to 9 images using a simple SDL limited to channel access and basic functions.
## Installing
With [npm](http://npmjs.org) do:
```
npm install imgproc -g
```## SDL
**Input variables :** r1 is the red channel of the first input image, g2 is the green channel of the second input image, b3 is the blue channel of the third input image, a9 is the alpha channel of the ninth input image, etc.
**Numerical constants :** 0, 0.001, 1923., -5, etc.
**Functions :**
* min
* max
* add
* sub
* mul
* div
* avg
* mod
* pow
* rand
* sin
* cos
* floor
* ceil
* mix## Recipes
### Limit to a single channel
```sh
imgproc img/trees.png -o outputs/red-channel-only.png --red="r1"
```![Example](/outputs/red-channel-only.png)
### Invert colors
```sh
imgproc img/trees.png -o outputs/invert-colors.png --red="sub(1,r1)" --green="sub(1,g1)" --blue="sub(1,b1)" --alpha="a1"
```![Example](/outputs/invert-colors.png)
### Desaturate (crudely)
```sh
imgproc img/trees.png -o outputs/desaturate.png --red="avg(r1,g1,b1)" --green="avg(r1,g1,b1)" --blue="avg(r1,g1,b1)" --alpha="a1"
```![Example](/outputs/desaturate.png)
### Desaturate by 70 percents
```sh
imgproc img/trees.png -o outputs/desaturate-seventy-percents.png --red="mix(r1,avg(r1,g1,b1),0.7)" --green="mix(g1,avg(r1,g1,b1),0.7)" --blue="mix(b1,avg(r1,g1,b1),0.7)" --alpha="a1"
```![Example](/outputs/desaturate-seventy-percents.png)
### Desaturate all but blue
```sh
imgproc img/trees.png -o outputs/desaturate-all-but-blue.png --red="avg(r1,g1,b1)" --green="avg(r1,g1,b1)" --blue="max(b1,avg(r1,g1,b1))" --alpha="a1"
```![Example](/outputs/desaturate-all-but-blue.png)
### Darken
```sh
imgproc img/trees.png -o outputs/darken.png --red="pow(r1,1.3)" --green="pow(g1,1.3)" --blue="pow(b1,1.3)" --alpha="a1"
```![Example](/outputs/darken.png)
### Lighten
```sh
imgproc img/trees.png -o outputs/lighten.png --red="add(0.25,mul(0.8,pow(r1, 0.5)))" --green="add(0.25,mul(0.8,pow(g1, 0.5)))" --blue="add(0.25,mul(0.8,pow(b1, 0.4)))" --alpha="a1"
```![Example](/outputs/lighten.png)
### Gameboy filter
```sh
imgproc img/trees.png -o outputs/gameboy.png --red="add(0.07,div(floor(mul(pow(avg(r1,g1,b1),0.7),4)),3.8))" --green="add(0.1,div(floor(mul(pow(avg(r1,g1,b1),0.7),4)),3.3))" --blue="add(0.02,div(floor(mul(pow(avg(r1,g1,b1),0.7),4)),3.8))" --alpha="a1"
```![Example](/outputs/gameboy.png)
### Blend two images
```sh
imgproc img/trees.png img/mask.png -o outputs/mix.png --red="mix(r1,r2,0.5)" --green="mix(g1,g2,0.5)" --blue="mix(b1,b2,0.5)" --alpha="mix(a1,a2,0.5)"
```![Example](/outputs/mix.png)
### Use a B/W image as an alpha mask
```sh
imgproc img/trees.png img/mask.png -o outputs/mask-alpha.png --red="r1" --green="g1" --blue="b1" --alpha="avg(r2,g2,b2)"
```![Example](/outputs/mask-alpha.png)
### Combine two heightmaps in a single image
```sh
imgproc img/trees.png img/mask.png -o outputs/combined.png --red="avg(r1,g1,b1)" --green="avg(r2,g2,b2)" --blue="0.5" --alpha="1"
```![Example](/outputs/combined.png)
### Mix two images using the multiply blend mode
```sh
imgproc img/trees.png img/mask.png -o outputs/multiply.png --red="mul(r1,r2)" --green="mul(g1,g2)" --blue="mul(b1,b2)" --alpha="avg(a1,a2)"
```![Example](/outputs/multiply.png)
### Mix two images using the screen blend mode
```sh
imgproc img/trees.png img/mask.png -o outputs/screen.png --red="sub(1,mul(sub(1,r1),sub(1,r2)))" --green="sub(1,mul(sub(1,g1),sub(1,g2)))" --blue="sub(1,mul(sub(1,b1),sub(1,b2)))" --alpha="avg(a1,a2)"
```![Example](/outputs/screen.png)
## Changelog
### 0.1.1 (2017.08.13) :
* Add proper credits for example image in readme.
### 0.1.0 (2017.08.13) :
* First release.
## License
MIT
## Additional credits
The example image is a picture licensed as CC-BY-NC-SA by **pohcao34** on Flickr ([see original](https://www.flickr.com/photos/129409923@N02/15167019544/)).