Ubuntuのコマンドラインで[〜#〜] gimp [〜#〜]を使用して、いくつかの画像に対して何らかの操作を実行したいと思います。私がしたい操作は次のとおりです。
コマンドラインを使用してそれらをどのように実行できますか?
画像を開くのはとても簡単です(image.png
は開きたい画像です)
gimp image.png
RGB画像をグレースケールに変換します。
GIMP Script-Fuファイル(ここではdmmConvertPNGtoGrayscale.scm
という名前で$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"
)
そして、このスクリプトを使用して起動します(たとえば、rgbtogs.sh
という名前にしました)。
# 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)"
スクリプトを実行して開始します。
chmod +x rgbtogs.sh
./rgbtogs.sh image
PNG画像をJPEG(またはJPG)に変換します。
GIMP Script-Fuファイル(ここではdmmConvertPNGtoJPG.scm
という名前で$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"
)
そして、このスクリプトを使用して起動します(たとえば、pngtojpg.sh
という名前にしました)。
# 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)"
スクリプトを実行して開始します。
chmod +x pngtojpg.sh
./pngtojpg.sh image
ソース: http://beefchunk.com/documentation/lang/gimp/GIMP-Scripts-Fu.html
注意:GIMP Script-Fuファイル内で、;
文字で始まるすべての行(またはこの文字の右側にあるすべてのもの)を削除できます。これらは単なるコメントです。
注:これらの.scm
script-fuは、元々GIMP 1.2用に作成されましたが、GIMP 2.8でテストしましたが、問題はありません
このタスクでGimpを使用する方法はわかりませんが、実際には、パッケージimagemagick
のツールがそのようなCLIタスクに適していると思います。このパッケージは、MediaWikiやWordPressなどのWebサーバーアプリケーションの変換ツールとして広く使用されています。また、PhotoShopなどのグラフィカルアプリによって実行される一部の操作のバックエンドでもあります。まず、パッケージをインストールする必要があります。
Sudo apt install imagemagick
次に、次のコマンドを使用してタスクを実行します( 参照 ):
convert input-file.png -set colorspace Gray -separate -average output-file.jpg
現在のディレクトリにあるすべてのPNGファイルを変換する必要がある場合は、次のようなループを使用できます。
for f in *.png; do convert "$f" -set colorspace Gray -separate -average "${f%.*}.jpg"; done