#! /bin/zsh # # this file: # https://dataswamp.org/~incal/conf/.zsh/gfx-resize . ~/.zsh/gfx upscale-2 () { 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_s=${src_w} (( $src_w < $src_h )) && src_s=${src_h} local src_d=${src_s}x${src_s} local dst_a=4k-2 local dst=${src_n}-${dst_a}.${src_e} local dst_s=2048 local dst_d=${dst_s}x${dst_s} # ___----------__ ___---------___ # \ master incal \ / in da mix / # /___----------__\/___---------___\ # \ convert \ $src \ -background black \ -gravity center \ -extent $src_d \ -filter Lanczos \ -resize $dst_d $dst } upscale () { local src=$1 local dst=${src:r}-4k.${src:e} local w=2048 local h=$w convert \ $src \ -alpha on \ -virtual-pixel transparent \ -filter Triangle \ +distort Affine "0,0 0,0 %w,0 ${w},0 0,%h 0,${h}" \ -alpha off \ -crop ${w}x${h}+0+0 \ $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 }