#! /bin/zsh # # this file: # https://dataswamp.org/~incal/conf/.zsh/gfx-resize . ~/.zsh/gfx upscale () { local src=$1 local src_n=${src:r:l} local src_e=${src:e:l} local src_w=$(pic-width-1 $src) local src_h=$(pic-height-1 $src) local src_d=${src_w}x${src_h} local dst_a=4k local dst=${src_n}-${dst_a}.${src_e} local dst_w=2048 local dst_h=$(( (${dst_w} / (${src_w} + 0.0)) * ${src_h} )) local dst_d=${dst_w}x${dst_h} # ___----------__ ___---------___ # \ master incal \ / in da mix / # /___----------__\/___---------___\ # \ convert \ $src \ -background black \ -gravity center \ -extent $src_d \ -filter Lanczos \ -resize $dst_d $dst } rs () { local fs=($@) local w=1080 local h=720 local gm=${w}x${h} for src in $fs; do local ext=${src:e} local nom=${src:r} local dst=${nom}-rs.${ext} convert -resize $gm $src $dst pad-to-size $dst $w $h done } pad-to-size () { local src=$1 local nom=${src:r} local ext=${src:e} local w=$2 local h=$3 local col=${4:-#000001} local rect=rect.${ext} draw-rect $w $h $col $rect composite -gravity center $src $rect ${nom}-pad.${ext} rm $rect } draw-rect () { local w=$1 local h=$2 local wh=$(( w / 2.0 )) local hh=$(( h / 2.0 )) local x=$(( w / 4.0 )) local y=$(( h / 4.0 )) local hh=$(( h / 2.0 )) local dim=${w}x${h} local col=${3:-red} local dst=${4:-${col}-${dim}.png} convert \ -alpha on \ -virtual-pixel transparent \ -draw "rectangle ${x},${y},${wh},${hh}" \ -fill $col \ -size $dim \ xc:blue \ $dst }