Skip to content

Instantly share code, notes, and snippets.

@wallentx
Created April 26, 2025 14:30
Show Gist options
  • Save wallentx/b4675a7a4e89447a226dc5e87589c37a to your computer and use it in GitHub Desktop.
Save wallentx/b4675a7a4e89447a226dc5e87589c37a to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<EOF
Usage: $(basename "$0") INPUT_IMAGE OUTPUT_IMAGE [MULTIPLY_FACTOR] [POW_FACTOR]
INPUT_IMAGE source file (e.g. emoji.png)
OUTPUT_IMAGE destination (e.g. emoji-hyper.png)
MULTIPLY_FACTOR brightness multiplier (default: 1.5)
POW_FACTOR gamma power curve (default: 0.9)
This script will:
• convert to floating-point pixels
• transform to sRGB
• auto-gamma, multiply, then pow
• set 16-bit depth
• apply the embedded Rec2020→Rec1886 ICC profile
EOF
exit 1
}
# require at least 2 args
if [[ $# -lt 2 ]]; then usage; fi
INPUT="$1"
OUTPUT="$2"
MULT="${3:-1.5}"
POW="${4:-0.9}"
# prepare a temporary ICC file
TMP_ICC="$(mktemp --suffix=.icc)"
cleanup() { rm -f "$TMP_ICC"; }
trap cleanup EXIT
# extract the embedded profile (everything after the marker) and decode
awk '/^__ICC_PROFILE_BELOW__/ {found=1; next} found {print}' "$0" | base64 -d > "$TMP_ICC"
# run ImageMagick
magick "$INPUT" \
-define quantum:format=floating-point \
-colorspace sRGB \
-auto-gamma \
-evaluate Multiply "$MULT" \
-evaluate Pow "$POW" \
-depth 16 \
-profile "$TMP_ICC" \
"$OUTPUT"
exit 0
__ICC_PROFILE_BELOW__
AAAEKGxjbXMEMAAAbW50clJHQiBYWVogB+AAAgAFABEAMwA7YWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1sY21zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALZGVzYwAAAQgAAABEY3BydAAAAUwAAAIsd3RwdAAAA3gAAAAUY2hhZAAAA4wAAAAsclhZWgAAA7gAAAAUYlhZWgAAA8wAAAAUZ1hZWgAAA+AAAAAUclRSQwAAA/QAAAAQZ1RSQwAAA/QAAAAQYlRSQwAAA/QAAAAQY2hybQAABAQAAAAkbWx1YwAAAAAAAAABAAAADGVuVVMAAAAoAAAAHABSAGUAYwAyADAAMgAwAC0AUgBlAGMAMQA4ADgANgAuAGkAYwBjAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAhAAAAAcAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEANQAtADIAMAAxADYALAAgAEgAYQByAGEAbABkACAAQgByAGUAbgBkAGUAbAAgACgAdwBlAGIAcwBpAHQAZQA6ACAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGgAYQByAGEAbABkAGIAcgBlAG4AZABlAGwALgBkAGUAOwAgAGUAbQBhAGkAbAA6ACAAbQBhAGkAbABAAGgAYQByAGEAbABkAGIAcgBlAG4AZABlAGwALgBkAGUAKQAuACAAVABoAGkAcwAgAEkAQwBDACAAcAByAG8AZgBpAGwAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAGEAIABDAHIAZQBhAHQAaQB2AGUAIABDAG8AbQBtAG8AbgBzACAAQQB0AHQAcgBpAGIAdQB0AGkAbwBuAC0AUwBoAGEAcgBlAEEAbABpAGsAZQAgADMALgAwACAAVQBuAHAAbwByAHQAZQBkACAATABpAGMAZQBuAHMAZQAgACgAaAB0AHQAcABzADoALwAvAGMAcgBlAGEAdABpAHYAZQBjAG8AbQBtAG8AbgBzAC4AbwByAGcALwBsAGkAYwBlAG4AcwBlAHMALwBiAHkALQBzAGEALwAzAC4AMAAvAGwAZQBnAGEAbABjAG8AZABlACkALgAAWFlaIAAAAAAAAPbWAAEAAAAA0y1zZjMyAAAAAAABDEIAAAXe///zJQAAB5MAAP2Q///7of///aIAAAPcAADAblhZWiAAAAAAAACsagAAR2////+BWFlaIAAAAAAAACADAAALrQAAy/9YWVogAAAAAAAAKmkAAKzkAAAHrXBhcmEAAAAAAAAAAAACZmZjaHJtAAAAAAADAAAAALU/AABKwQAAK4UAAMwIAAAhiQAAC8c=
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment