Je veux faire une opération sur certaines images en utilisant GIMP via la ligne de commande sur Ubuntu. Les opérations que je souhaite effectuer sont:
Comment puis-je les faire en utilisant la ligne de commande?
Ouvrir une image est vraiment facile (image.png
est l'image que vous souhaitez ouvrir)
gimp image.png
Convertissez l'image RVB en niveaux de gris:
Créez un fichier Script-Fu GIMP (nommé ici dmmConvertPNGtoGrayscale.scm
et enregistré dans $HOME/.gimp-2.8/scripts
):
; dmmPNGtoGrayscale - GIMP Script-Fu to convert a PNG image to Grayscale
; This Script-Fu must be put in The GIMP's script directory
; (e.g., $HOME/.gimp-1.2/scripts).
; For command-line invocation, use the Shell script rgbtogs.sh
; For interactive invocation, run The GIMP and go to
; Xtns -> Script-Fu -> dmm
;
(define (dmmPNGtoGrayscale infile outfile)
(let* ((image (car (file-png-load 1 infile infile)))
(drawable (car (gimp-image-active-drawable image)))
)
(gimp-convert-grayscale image)
(file-png-save 1 image drawable outfile outfile
1 0 0 0 0 0 0 )
; 1 Adam7 interlacing?
; 0 deflate compression factor (0-9)
; 0 Write bKGD chunk?
; 0 Write gAMMA chunk?
; 0 Write oFFs chunk?
; 0 Write tIME chunk? ?? backwards in DB Browser
; 0 Write pHYS chunk? ?? backwards in DB Browser
)
)
(script-fu-register ; I always forget these ...
"dmmPNGtoGrayscale" ; script name to register
"<Toolbox>/Xtns/Script-Fu/dmm/dmmPNGtoGrayscale" ; where it goes
"dmm PNG (RGB or Indexed) to Grayscale" ; script description
"David M. MacMillan" ; author
"Copyright 2004 by David M. MacMillan; GNU GPL" ; copyright
"2004-02-08" ; date
"" ; type of image
SF-FILENAME "Infile" "infile.png" ; default parameters
SF-FILENAME "Outfile" "outfile.png"
)
Et lancez-le en utilisant ce script (je l'ai nommé rgbtogs.sh
par exemple) :
# rgbtogs.sh
# Invoke The GIMP with Script-Fu dmmPNGtoGrayscale.scm
# No error checking.
if [ -e $1 ]
then
echo "Usage: rgbtogs.sh degrees filebasename"
echo "Error: Parameter (filename base) required"
exit 1
fi
gimp -c -i -d -b "(dmmPNGtoGrayscale \"$1.png\" \"$1-gray.png\")" "(gimp-quit 0)"
Exécutez le script et lancez-le:
chmod +x rgbtogs.sh
./rgbtogs.sh image
Convertissez une image PNG en JPEG (ou JPG):
Créez un fichier Script-Fu GIMP (nommé ici dmmConvertPNGtoJPG.scm
et enregistré dans $HOME/.gimp-2.8/scripts
):
; dmmConvertPNGtoJPG.scm - GIMP Script-Fu to Convert PNG to JPG
; This Script-Fu must be put in The GIMP's script directory
; (e.g., $HOME/.gimp-1.2/scripts).
; For command-line invocation, use the Shell script pngtojpg.sh
; For interactive invocation, run The GIMP and go to
; Xtns -> Script-Fu -> dmm
;
(define (dmmConvertPNGtoJPG infile outfile)
(let* ((image (car (file-png-load 1 infile infile)))
(drawable (car (gimp-image-active-drawable image)))
)
(file-jpeg-save 1 image drawable outfile outfile
0.75 0 1 1 "GIMP" 0 1 0 0 )
; 0.75 quality (float 0 <= x <= 1)
; 0 smoothing factor (0 <= x <= 1)
; 1 optimization of entropy encoding parameter (0/1)
; 1 enable progressive jpeg image loading (0/1)
; "xxxx" image comment
; 0 subsampling option number
; 1 force creation of a baseline JPEG
; 0 frequency of restart markers
; in rows, 0 = no restart markers
; 0 DCT algoritm to use
)
)
(script-fu-register ; I always forget these ...
"dmmConvertPNGtoJPG" ; script name to register
"<Toolbox>/Xtns/Script-Fu/dmm/dmmConvertPNGtoJPG" ; where it goes
"dmm Convert PNG to JPG" ; script description
"David M. MacMillan" ; author
"Copyright 2004 by David M. MacMillan; GNU GPL" ; copyright
"2004-01-27" ; date
"" ; type of image
SF-FILENAME "Infile" "infile.png" ; default parameters
SF-FILENAME "Outfile" "outfile.png"
)
Et lancez-le en utilisant ce script (je l'ai nommé pngtojpg.sh
par exemple) :
# pngtojpg.sh
# Invoke The GIMP with Script-Fu dmmConvertPNGtoJPG.scm
# No error checking.
if [ -e $1 ]
then
echo "Usage: pngtojpg.sh filebasename"
echo "Error: Parameter 1 (filename base) required"
exit 1
fi
gimp -c -i -d -b "(dmmConvertPNGtoJPG \"$1.png\" \"$1.jpg\")" "(gimp-quit 0)"
Exécutez le script et lancez-le:
chmod +x pngtojpg.sh
./pngtojpg.sh image
Source: http://beefchunk.com/documentation/lang/gimp/GIMP-Scripts-Fu.html
NB: à l'intérieur du fichier Script-Fu GIMP, vous pouvez supprimer toutes les lignes qui commencent par ;
caractère (ou tout à droite sur ce caractère), ce ne sont que des commentaires
NB: Ces .scm
script-fu a été créé à l'origine pour GIMP 1.2, mais j'ai testé avec GIMP 2.8 et il n'y a aucun problème
Je ne sais pas comment utiliser Gimp pour cette tâche, mais en fait je pense que les outils du package imagemagick
sont un meilleur choix pour de telles tâches CLI. Ce package est largement utilisé comme outil de conversion sur les applications du serveur Web comme MediaWiki et WordPress, il est également un back-end pour certaines opérations effectuées par des applications graphiques telles que PhotoShop. Vous devez d'abord installer le package:
Sudo apt install imagemagick
Utilisez ensuite la commande suivante pour accomplir la tâche ( référence ):
convert input-file.png -set colorspace Gray -separate -average output-file.jpg
Si vous avez besoin de convertir tous les fichiers PNG dans le répertoire courant, vous pouvez utiliser une boucle comme celle-ci:
for f in *.png; do convert "$f" -set colorspace Gray -separate -average "${f%.*}.jpg"; done