Skip to content

Instantly share code, notes, and snippets.

@ozwaldorf
Last active May 4, 2023 21:11
Show Gist options
  • Save ozwaldorf/7190054ca96a258a871f67a508af12ad to your computer and use it in GitHub Desktop.
Save ozwaldorf/7190054ca96a258a871f67a508af12ad to your computer and use it in GitHub Desktop.
Generate LUT from Arbitrary Color Palettes
#!/bin/bash
if [ "$#" -lt 3 ]; then
echo "Usage: `basename $0` <output filename> <noise level> color1 color2 ..."
exit 1
fi
output=$1
noise=$2
shift 2
p=($@)
# Create palette
for ((i=0; i<${#p[@]}; i++)); do
convert -size 100x100 xc:"${p[$i]}" "/tmp/swatch_$i.png"
done
montage -tile x1 -geometry +0+0 /tmp/swatch_*.png /tmp/palette.png
# Create LUT
convert HALD:8 -duplicate 512 -attenuate $noise +noise Gaussian -quantize LAB +dither -remap /tmp/palette.png -evaluate-sequence Mean $output
# Cleanup
rm /tmp/swatch_*.png
rm /tmp/palette.png
@ozwaldorf
Copy link
Author

Example (Catppuccin Mocha)

./generate.sh mocha-lut.png 2 F5E0DC F2CDCD F5C2E7 CBA6F7 F38BA8 EBA0AC FAB387 F9E2AF A6E3A1 94E2D5 89DCEB 74C7EC 89B4FA B4BEFE CDD6F4 BAC2DE A6ADC8 9399B2 7F849C 6C7086 585B70 45475A 313244 1E1E2E 181825 11111B

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment