Skip to content

Instantly share code, notes, and snippets.

@ak1ra-komj
Created October 29, 2021 15:35
Show Gist options
  • Save ak1ra-komj/ed874a44d59ce1f91b2ac108c95ca618 to your computer and use it in GitHub Desktop.
Save ak1ra-komj/ed874a44d59ce1f91b2ac108c95ca618 to your computer and use it in GitHub Desktop.
GNU Parallel 实战: Using GNU Parallel + ImageMagick to convert .dds image
#! /bin/bash
# author: ak1ra
# date: 2021-10-29
# using GNU Parallel + ImageMagick to convert .dds image
function magick_convert() {
# ddsImage/ddsImage000000/CHU_UI_Character_0000_00_00.dds
src="$1"
format="$2"
resize="$3"
convert_args=""
if [ -n "$resize" ]; then
convert_args="$convert_args -resize $resize"
dest_dir="$(echo $src | cut -d/ -f1).${resize}.${format}"
else
dest_dir="$(echo $src | cut -d/ -f1).${format}"
fi
test -d "$dest_dir" || mkdir -p "$dest_dir"
basename="$(basename $src)"
dest="${dest_dir}/${basename%.*}.${format}"
echo magick convert $src $convert_args $dest
if which magick; then
# If ImageMagick version >= 7.x
magick convert $src $convert_args $dest
else
convert $src $convert_args $dest
fi
}
srcdir="$1"
format="$2"
resize="$3"
test -n "$srcdir" || srcdir="ddsImage"
test -n "$format" || format="webp"
# test -n "$resize" || resize="512x512"
export -f magick_convert
find $srcdir/ -type f -name '*.dds' | \
grep -E 'CHU_UI_Character_[0-9]{4}_[0-9]{2}_00\.dds' | \
parallel magick_convert {} "$format" "$resize"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment