GIMP2.6での画像バッチ処理について


画像の一部分にぼかし処理の位置と範囲を指定してぼかし処理を施したいのですが、
Batch Processでは画像全体にしかぼかし処理が行えずに困っています。

ぼかし処理の位置指定と範囲指定が可能で、バッチ処理ができる方法をおしえてください。

回答の条件
  • 1人20回まで
  • 13歳以上
  • 登録:2012/03/11 00:41:11
  • 終了:2012/03/18 00:45:07

回答(1件)

id:TransFreeBSD No.1

TransFreeBSD回答回数661ベストアンサー獲得回数2642012/03/17 23:42:38

ポイント500pt

下記参考になるべく機種依存しない様に書いてみました。ただperlが必要です。

カレントディレクトリのjpgファイルを処理します。
最後の方に実際の処理部分があって、
下記で200 X 200の点から100 X 100の範囲を選択し、

; area select
	(gimp-rect-select image 200 200 100 100 2 0 0)

下記でぼかし半径を水平垂直20でガウシアンぼかしをかけています。

; blur
	(plug-in-gauss 1 image drawable 20 20 1)

下記でJPEGでの保存をしていて、いくつか保存時のパラメータがあります。

; save file
	(file-jpeg-save 1 image drawable outFile outFile 0.85 0 1 0 "" 0 1 0 0)

詳細は上記リンクを参考に「コンソール」の「参照」ボタンを押すことで現れる「Script-fu プロシージャブラウザ」で、各関数の説明を参照してください。
ただ、簡単な説明しかありませんので、実際の所トライアンドエラーが必要かも知れません。

use strict;
use warnings;
use Cwd;
use File::Spec;
use File::HomeDir;

my @files = glob "*.jpg";
my $newdir = 'new';
my $myfunc = 'my-func';
my $runall = 'run-all';
my $gimpcmd = 'gimp --no-interface --no-data --no-fonts --batch';

my $path = getcwd;
my $runall_file = File::Spec->catfile(
    File::HomeDir->my_home,
    '.gimp-2.6',
    'scripts', 
    "$runall.scm");

open my $out, '>', $runall_file
    or die "cannot open $runall_file: $!";
print $out "(define ($runall)\n";
foreach (@files) {
    my $src = File::Spec->catfile($path, $_);
    $src =~ s/\\/\\\\/g;
    my $dst = File::Spec->catfile($path, $newdir, $_);
    $dst =~ s/\\/\\\\/g;
    print $out "\t($myfunc \"$src\" \"$dst\")\n";
}
print $out <<"TAIL";
	(gimp-quit 0)
)

TAIL
print $out <DATA>;
#if (-f "$myfunc.scm" and open my $scm, '<', "$myfunc.scm") {
#    print $out (<$scm>);
#    close $scm;
#}
close $out;

-d $newdir or mkdir $newdir;
system qq{$gimpcmd "($runall)"};

__END__
(define (my-func inFile outFile)
; Load an image
	(define image)
	(set! image (car (file-jpeg-load 1 inFile inFile)))
; get drawable
	(define drawable)
	(set! drawable (car (gimp-image-get-active-drawable image)))
; area select
	(gimp-rect-select image 200 200 100 100 2 0 0)
; blur
	(plug-in-gauss 1 image drawable 20 20 1)
; save file
	(file-jpeg-save 1 image drawable outFile outFile 0.85 0 1 0 "" 0 1 0 0)
)

Windowsだとperlが標準でないのでVBSが良いのですが、ちょっと移植の時間が取れないので……

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません