Skip to content

A command line app for pixel sorting images

License

Notifications You must be signed in to change notification settings

RusticFlare/pixel-sorter

Repository files navigation

pixel-sorter

ko-fi

npm License GitHub Sponsors

A command line app for pixel sorting images

If you need help, find bugs, or want a new feature: please raise an issue

Inspired by satyarth/pixelsort

Installation

Prerequisites

npm

  • Install npm.
  • You are downloading the command line client that lets you install pixel-sorter from the npm repository

Install (and Update) pixel-sorter

npm i -g @rusticflare/pixel-sorter

Distro Packages

AUR (Arch Linux)

pixel-sorter can be installed from the AUR using an AUR helper. e.g.

paru -S pixel-sorter

Usage

Pixel Sort Your First Image

This will pixel sort an image called example.jpg in your current directory and save the output in the same directory as example.jpg.

pixel-sorter example.jpg

Note: A one pixel border is cropped from the output file (this is due to this pixel sorter making some of those outer pixels slightly transparent)

Troubleshooting
  • Powershell
    • Make sure you are running as an Administrator
    • If you see this error:
      ... cannot be loaded because the execution of scripts is disabled on this system.
      run:
      Set-ExecutionPolicy RemoteSigned
      (See this StackOverflow answer for more details)

Options

See Examples for how to use these

Option Argument Description Default Value
-p A pattern The patterns to sort along lines
-o Text The name of the output file (e.g. sorted) The current date and time
-m File The path to "mask" file N/A
-f File The path to a file to be used by the randomfile interval function N/A
-a A number in 0.0-360.0 The angle to sort along (as degrees on a compass) 0.0
-i An interval function The interval function to use lightness
-l A number in 0.0-1.0 The darkest lightness to include in sorted sections (used when the interval function is lightness) 0.25
-u A number in 0.0-1.0 The brightest lightness to include in sorted sections (used when the interval function is lightness) 0.8
-w A positive whole number The average width (in pixels) of the random[file] sorted sections (used when the interval function is random[file]) 400
-s A sorting function The sorting function to use lightness
-e A filetype The extension of the filetype to output jpg
-c A pair of integers The center of the circle when the circles pattern is used 0 0
-r N/A Reverse the sorting order N/A
-h N/A Print the help message N/A

Patterns

  • lines
  • circles

Interval Functions

  • lightness - pixels with a lightness between the -l and -u values are sorted
  • random - random sections of average width -w are sorted
  • randomfile - the brighter a pixel in a file provided by -f makes a pixel more likely to be sorted (use -w to control the average width)
  • none - everything is sorted

Sorting Functions

  • hue
  • saturation
  • lightness
  • intensity

Filetypes

  • jpg
  • png

Examples

example.jpg:

Default

pixel-sorter example.jpg

Threshold

When using the lightness interval function: only pixels with a lightness between -l and -u will be sorted.

Here we sort pixels with a lightness between 0.6 and 0.9:

pixel-sorter example.jpg -l 0.6 -u 0.9

Angle 🧭

You can change the sorting angle (as degrees on a compass).

pixel-sorter example.jpg -a 315

Circles 🟣

Sort circles with:

  • center -200 -600 (0 0 is the center of the image)
  • angle 210 (where the brightest and darkest pixels meet)
  • reversed sort
pixel-sorter example.jpg -p circles -c -200 -600 -a 210 -r

Mask & Random 🎭

A "mask" file should be a black and white image (the same size as the sorted image). Only the white sections are considered for sorting.

-i random causes random sections of the image should be sorted. You can control the average width (in pixels) of these sections with -w.

example-mask.jpg:

pixel-sorter example.jpg -m example-mask.jpg -a 135 -i random

Random File

The brighter the pixel in -f the more likely the corresponding pixel is to be sorted.

example-randomfile-mask.jpg:

pixel-sorter example.jpg -i randomfile -f example-randomfile-mask.jpg

ko-fi