fix(catimg): add support to magick binary (#12608)

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
This commit is contained in:
Gentoo 2024-08-12 12:46:16 +03:00 committed by GitHub
parent 47767bd03c
commit d6f84f3e7d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 10 deletions

View File

@ -1,6 +1,7 @@
# catimg # catimg
Plugin for displaying images on the terminal using the `catimg.sh` script provided by [posva](https://github.com/posva/catimg) Plugin for displaying images on the terminal using the `catimg.sh` script provided by
[posva](https://github.com/posva/catimg)
To use it, add `catimg` to the plugins array in your zshrc file: To use it, add `catimg` to the plugins array in your zshrc file:
@ -10,7 +11,7 @@ plugins=(... catimg)
## Requirements ## Requirements
- `convert` (ImageMagick) - `magick convert` (ImageMagick)
## Functions ## Functions

View File

@ -9,9 +9,11 @@
function catimg() { function catimg() {
if [[ -x `which convert` ]]; then if (( $+commands[magick] )); then
zsh $ZSH/plugins/catimg/catimg.sh $@ CONVERT_CMD="magick" zsh $ZSH/plugins/catimg/catimg.sh $@
elif (( $+commands[convert] )); then
CONVERT_CMD="convert" zsh $ZSH/plugins/catimg/catimg.sh $@
else else
echo "catimg need convert (ImageMagick) to work)" echo "catimg need magick/convert (ImageMagick) to work)"
fi fi
} }

View File

@ -7,6 +7,10 @@
# GitHub: https://github.com/posva/catimg # # GitHub: https://github.com/posva/catimg #
################################################################################ ################################################################################
# this should come from outside, either `magick` or `convert`
# from imagemagick v7 and ahead `convert` is deprecated
: ${CONVERT_CMD:=convert}
function help() { function help() {
echo "Usage catimg [-h] [-w width] [-c char] img" echo "Usage catimg [-h] [-w width] [-c char] img"
echo "By default char is \" \" and w is the terminal width" echo "By default char is \" \" and w is the terminal width"
@ -43,23 +47,23 @@ if [ ! "$WIDTH" ]; then
else else
COLS=$(expr $WIDTH "/" $(echo -n "$CHAR" | wc -c)) COLS=$(expr $WIDTH "/" $(echo -n "$CHAR" | wc -c))
fi fi
WIDTH=$(convert "$IMG" -print "%w\n" /dev/null) WIDTH=$($CONVERT_CMD "$IMG" -print "%w\n" /dev/null)
if [ "$WIDTH" -gt "$COLS" ]; then if [ "$WIDTH" -gt "$COLS" ]; then
WIDTH=$COLS WIDTH=$COLS
fi fi
REMAP="" REMAP=""
if convert "$IMG" -resize $COLS\> +dither -remap $COLOR_FILE /dev/null ; then if $CONVERT_CMD "$IMG" -resize $COLS\> +dither -remap $COLOR_FILE /dev/null ; then
REMAP="-remap $COLOR_FILE" REMAP="-remap $COLOR_FILE"
else else
echo "The version of convert is too old, don't expect good results :(" >&2 echo "The version of convert is too old, don't expect good results :(" >&2
#convert "$IMG" -colors 256 PNG8:tmp.png # $CONVERT_CMD "$IMG" -colors 256 PNG8:tmp.png
#IMG="tmp.png" # IMG="tmp.png"
fi fi
# Display the image # Display the image
I=0 I=0
convert "$IMG" -resize $COLS\> +dither `echo $REMAP` txt:- 2>/dev/null | $CONVERT_CMD "$IMG" -resize $COLS\> +dither `echo $REMAP` txt:- 2>/dev/null |
sed -e 's/.*none.*/NO NO NO/g' -e '1d;s/^.*(\(.*\)[,)].*$/\1/g;y/,/ /' | sed -e 's/.*none.*/NO NO NO/g' -e '1d;s/^.*(\(.*\)[,)].*$/\1/g;y/,/ /' |
while read R G B f; do while read R G B f; do
if [ ! "$R" = "NO" ]; then if [ ! "$R" = "NO" ]; then