浏览代码

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

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
Gentoo 8 月之前
父节点
当前提交
d6f84f3e7d
共有 3 个文件被更改,包括 17 次插入10 次删除
  1. 3 2
      plugins/catimg/README.md
  2. 5 3
      plugins/catimg/catimg.plugin.zsh
  3. 9 5
      plugins/catimg/catimg.sh

+ 3 - 2
plugins/catimg/README.md

@@ -1,6 +1,7 @@
 # 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:
 
@@ -10,7 +11,7 @@ plugins=(... catimg)
 
 ## Requirements
 
-- `convert` (ImageMagick)
+- `magick convert` (ImageMagick)
 
 ## Functions
 

+ 5 - 3
plugins/catimg/catimg.plugin.zsh

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

+ 9 - 5
plugins/catimg/catimg.sh

@@ -7,6 +7,10 @@
 # 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() {
   echo "Usage catimg [-h] [-w width] [-c char] img"
   echo "By default char is \"  \" and w is the terminal width"
@@ -43,23 +47,23 @@ if [ ! "$WIDTH" ]; then
 else
   COLS=$(expr $WIDTH "/" $(echo -n "$CHAR" | wc -c))
 fi
-WIDTH=$(convert "$IMG" -print "%w\n" /dev/null)
+WIDTH=$($CONVERT_CMD "$IMG" -print "%w\n" /dev/null)
 if [ "$WIDTH" -gt "$COLS" ]; then
   WIDTH=$COLS
 fi
 
 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"
 else
   echo "The version of convert is too old, don't expect good results :(" >&2
-  #convert "$IMG" -colors 256 PNG8:tmp.png
-  #IMG="tmp.png"
+  # $CONVERT_CMD "$IMG" -colors 256 PNG8:tmp.png
+  # IMG="tmp.png"
 fi
 
 # Display the image
 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/,/ /' |
 while read R G B f; do
   if [ ! "$R" = "NO" ]; then