Ligne de commande pour recadrer automatiquement une image?

18

En utilisant le menu de Gimp, vous pouvez recadrer automatiquement l'image (en supprimant les bordures blanches). J'ai beaucoup d'images avec des bordures blanches de différentes tailles. Je veux les supprimer en utilisant Gimp en ligne de commande mais je ne peux pas comprendre ce qu'est la commande.

Quelqu'un a une idée?

Peut-être en utilisant ImageMagick?

GuillaumeThomas
la source

Réponses:

38

(Principalement pour référence future personnelle), en utilisant ImageMagick:

convert -trim image.jpg image.jpg

Pour découper / recadrer tout le répertoire:

for a in *.jpg; do convert -trim "$a" "$a"; done

Ou en utilisant find :

find -name "*.jpg" -exec convert -trim "{}" "{}" \;
Natirips
la source
2
Également à partir de la suite ImageMagick, mogrifyfera le même travail que convertir, mais remplacera l'original au lieu de faire des copies.
Yab
-transparent ne fonctionne pas pour moi, mais -trim fonctionne. Merci.
Ivan ZG Xiao
4

Je n'ai pas utilisé cela depuis un moment mais j'espère que cela aidera. Créez un script batch gimp (j'appelle le mien crop-png.scm) et placez-le dans ~ / .gimp-2.6 / scripts /).

(define (crop-png filename)
  (let* 
    (
    (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
    (drawable (car (gimp-image-get-active-layer image)))
    )

  ; crop the image
  (plug-in-autocrop RUN-NONINTERACTIVE image drawable)

  ; save in original png format
  (file-png-save RUN-NONINTERACTIVE image drawable filename filename
       0 6 0 0 0 1 1)

  ; clean up the image
  (gimp-image-delete image)
  )
)

Ensuite, enregistrez ce script shell (par exemple, pngcrop.sh) et appelez-le sur les fichiers png comme ceci: 'pngcrop.sh * .png'

#!/bin/bash

if [ $# -le 0 ]; then
    echo
    echo "Usage: $(basename $0) file1.png [file2.png ...]"
    echo
    echo "  This script uses gimp to autocrop PNG files and"
    echo "  save them to PNG format.  You must have"
    echo "  crop-png.scm installed in your gimp "
    echo "  scripts directory."
    echo
    exit 1
fi

# set the filelist
files=$*

# # set the base command
# CMD="gimp -i -b "

# loop and add each file
for i in ${files[*]} ; do
  # #echo $i
  # ARGS="\"(crop-png \\\"$i\\\")\""
  # CMD="$CMD $ARGS"

  gimp -i -b "(crop-png \"$i\")" -b "(gimp-quit 0)"
done

# # add the end to quit
# TAIL="-b \"(gimp-quit 0)\""
# CMD="$CMD $TAIL"
# 
# #echo $CMD
# eval $CMD
warmlogic
la source