plamo4.73->retouch

グラフィックス

ベースシステムは,plamo linux 4.73です。

.MPOファイル

CX4には、カメラが5つのターゲットに一つずつピントを合わせて撮影する機能(マルチターゲットAF)がありまして、5枚の写真が1つの.MPOファイルに収まっています(実際にはそれぞれのサムネイルも入っています)。

5枚のイメージデータを1つずつのファイルに分解します。→ extractmpoimages.pl

$ perl extractmpoimages.pl [target.MPO]

gimp2.6

インストール

入れたものはgimp2.6.11です。

$ ./configure
$ make
# make install

jpeg保存の標準値

保存のときに指定しない限り、元の画像ファイルの値を引き継ぐようです。

筆圧感知

plamo4.73でセットアップされる gtk+2 が対応していないようで、gimpでも筆圧感知が使えません (xinputを有効化せずにビルドしていると思われます)。

筆圧感知が使えると、タブレットの消しゴム機能も使えたりして便利なのですが、、、

トーンカーブ

トーンカーブのヒストリーが残るのですが、際限なく保存されてしまいます。 すると、名前をつけて保存したトーンカーブが、ヒストリーの彼方に追いやられてしまうことに。

ヒストリーの数を制限できればいいんですが...

そこで、ヒストリーを保存しているファイルを書き換えるperlスクリプトを書きました。 gimpを起動する前に実行することにします(別にgimpの起動コマンドを書いているので、そこに挟んでおきます)。

#!/usr/bin/perl
#
# -------------------------------------------------------
# gimp-strip-curves.pl  
# Gimp2.6のトーンカーブの履歴ファイルを整理する
# -------------------------------------------------------
#  - 自動保存された分は、○日前以前 or 10個め以降の分を消す
#

use Date::Simple;

$wdir = "$ENV{'HOME'}/.gimp-2.6/tool-options";
$ifile = "gimp-curves-tool.settings";
$ofile = $ifile . ".2"; # 「2」に意味はナイ ...
$qfile = $ifile . ".9"; # 「9」に意味はナイ ...?
# 元ファイル(ifile)から、新しい設定ファイル(ofile)を作成して ...

$maxdif = 10; # 履歴を残す最大日数
$maxhis = 10; # 履歴を残す最大数

chdir $wdir || die "cannot chdir to \"$wdir\"";
open( IN, $ifile ) || die "cannot open \"$ifile\"";
open( OUT, ">$ofile" ) || die "cannot open \"$ofile\"";

my $i=0;
my $kakko = 0;

while(){
    $text = $_;

    if( $kakko == 0 ){
	# (GimpCurvesConfig "2009-09-20 00:03:11"
	if( $text =~ m/\(GimpCurvesConfig\s\"(\d\d\d\d-\d\d-\d\d)\s/ ){
	    $dt = Date::Simple->new( $1 );
	    $today = Date::Simple->new( `date +%F` );
	    $dif = $today - $dt;
	}else{
	    $dt = 0;
	    $today =0;
	    $dif =-1;
	}
    }

    # ------------------ カッコの数でブロックを判定
    $left = $text;
    $left =~ s/\(+//;
    $kl = length($text)-length($left);

    $right = $text;
    $right =~ s/\)+//;
    $kr = length($text)-length($right);

    $kakko = $kakko + $kl -$kr;
#    print "$kakko ";

    $te .= $text;
    if( $kakko == 0 ){
	if( $dif < 0 ){
	    print OUT $te;

	}elsif(( $dif < $maxdif )&&( $i < $maxhis )){
	    $i++;
	    print OUT $te;

	}
#	print "--------------------------------------- $dt\n";
	$te = "";
    }

}

# 元ファイル(ifile)をバックアップ(qfile)して
$ret = `mv -f $ifile $qfile`;

# 新しいファイル(ofile)を正式な設定ファイル(ifile)にする
$ret = `mv $ofile $ifile`;

script-fu

デバッグの方法を教えてください...(T^T)

スクリプト中の日本語が悪さをするようです。恐るべきことに、コメント中でも悪さをします

plamoで使っている文字コードはEUC-JP。他の文字コードも悪さをするかは不明です。

とりあえずの対応としては、日本語文字を消してしまうのが簡単なのですが、コメント中でも悪さをするというタチの悪さに割り切れないものを感じます。

とにかく上書き保存したい

強制的に保存品質を決め打ちしてダイアログも出さない保存スクリプト(script-fu)です。

jpegで保存する時には、画像品質を0〜100で任意に与えることができますが、デフォルトでは元のjpegファイルの設定値をそのまま引き継ごうとします。

デジカメで写真を撮ったときはなるべく高品質になる設定をしていますが、色味などを調整したあと、手元で保存する時には90くらいに落としています。

この値を手動で設定するのは面倒だし、その他にもいろいろ設定するダイアログやら確認するだけの警告やらが出て意外に煩雑だったので、何とかしてみました。

;
;
;
(define (script-fu-save-as-90
	 theImage	;画像
	 theLayer	;ドロアブル
	 )

;    (gimp-image-undo-group-start theImage)

  (let* ( (filename "") (sImage 0) (sLayer 0) ) 
    (set! filename (car (gimp-image-get-filename theImage)))

      ; 内側では複製を持っておいてレイヤー結合をしておく
      ; (これをやって、レイヤーが合成された状態のサムネイルを生成させる)
    (set! sImage (car (gimp-image-duplicate theImage)))
    (set! sLayer (car (gimp-image-get-active-layer sImage)))
    (set! sLayer (car (gimp-image-merge-visible-layers sImage CLIP-TO-IMAGE)))

    (file-jpeg-save 1 sImage sLayer filename filename
		    0.90 ; jpegの圧縮品質( 0〜1.0 )
		    0.0  ; スムージング( 0〜1.0 )
		    1    ; 最適化(0/1)
		    0    ; プログレッシブ(0/1)
		    ""   ; コメント
		    3    ; サブサンプリング(0[最小],3, 1[4:2:2],2[1:1:1(最高品位)])
		    1    ; 強制的にbaseline jpegを生成する(0/1)
		    0    ; リスタートマーカー(0[しない],列数)
		    2    ; DCT( 0[高精度整数演算], 1[整数演算], 2[浮動小数点演算] )(?)
		    )

    (gimp-image-delete sImage)
   )

   ; 元の画像の dirty count を0に戻す
   ; (汚れゼロ→直後に閉じるときには「保存するか」と聞く必要はない )
  (gimp-image-clean-all theImage)
  
   ;    (gimp-image-undo-group-end theImage)
  (gimp-displays-flush)
  )

(script-fu-register
 "script-fu-save-as-90" ; 名前とfunction名は揃える。
 "<Image>/Filters/Myscripts/save-as-90" ; メニュー登録位置
 "description"
 "name"
 "copyright"
 "date"
 "RGB*"
 SF-IMAGE      "Image"     0
 SF-DRAWABLE   "Drawable"  0
 )

RAW現像

UFRaw

gtkimageviewを入れておく必要があります

gimpのバージョンでインストール内容が変わるので pkg-configのサーチパスに /usr/local/... を追加しておくこと。

RawTherapee

UFRawより使い勝手はいいですが、重いです。

2.4.1のバイナリを入れてみました。

インストールは .tgzファイルを、tarで解凍して任意のディレクトリに移してあげる方が良いようです。

# tar zxvf RawTherapee241.tgz
# mv RawTherapee241 /usr/local/bin/

起動コマンドは rtstart なのですが、/ ... /RawTherapee241/ にパスが通っていないので、/usr/local/bin に起動コマンドを置きました。 rtstartをコピーして、パスだけ書き換えてます。

#!/bin/bash

export LD_LIBRARY_PATH=/usr/local/bin/RawTherapee241
/usr/local/bin/RawTherapee241/rt "$*"

3.0をソースから入れてみました

配布元からだと、ソースツリーを持ってくる形になるため、ちょっと面倒なのです。

ダウンロードしてtarで展開するお馴染みの手順がいいよね、てことで、debianのソースアーカイブを持ってきました。

インストール手順は、アーカイブ内にそれっぽいテキストファイルが有りますので、そちらを参考にしましたが、試行錯誤の結果、やり方を若干変えています。(どちらかというと安直な方に...(^^;))

インストール先を /usr/local/bin/rawtherapee-3.0 に決め打ちします。

$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/bin/rawtherapee-3.0 -DBINDIR=/usr/local/bin/rawtherapee-3.0 -DDATADIR=/usr/local/bin/rawtherapee-3.0 -DLIBDIR=/usr/local/bin/rawtherapee-3.0
$ make
# make install

なお、"before|after view" ボタンを操作したときにエラーが出て落ちてしまう状況です。 ソース(rtgui/editorpanel.cc EditorPanel::beforeAfterToggled() )を触ってこの機能を無効化しています。

イメージビューア

irfan viewみたいなのと、VIXみたいなのが欲しいところ。 あと、画像加工の軽いやつ。Gimpまで使わなくてもいいよなー、という時のための。

danpei

サムネイルで画像ファイルを一覧します。サムネイルの生成にちょっと時間がかかりますが、任意の画像viewer・画像加工アプリを設定できます。

予め,gdk-pixbuf(0.8以上)を入れておく必要があります。

画像編集で逆順にロードさせたい

画像編集にはgimpを使うように指定しているのですが、複数の画像を編集させようとすると、前から順番に読み込ませようとします。

すると、結果的には後ろのファイルが手前のウィンドウになって、手前からの並びとしては逆順になってしまいます。

なので、gimpの起動スクリプトを書いて、逆順にファイル名を渡すようにしました。

ところが、gimpの複数読み込みには怪現象(笑)が!(タブン仕様ダトオモイマスケド..) どんな動作をするかは、スクリプトを見てみてください。

#!/usr/bin/perl
#
@files=@ARGV;

# gimpが起動しているかチェックする
open(IN, 'ps ax |');
$ex = 1;
foreach $psg (  ){
    if( $psg =~/[\/ ]gimp\s/ ){
	$ex = 0;
	last;
    }
}
close(IN);

if( $ex >0 ){
    # gimpが起動していない時はファイルを逆順にする
    @files = reverse( @files );

    # あと、トーンカーブの掃除
    $ret = `~/bin/gimp-strip-curves.pl`;

}else{
    # gimpが起動している時には最後のファイルを先頭にする
    $e = pop(@files);
    unshift(@files, $e);
}

system( "gimp @files" );

qiv

imlibを入れておく必要があります (imlibもqivと同じページにアーカイブがあります)。

軽量画像viewer。ファイルセレクタ・ファイラーの機能は持っていないので、danpeiと組み合わせて使ってます。

GQview

サムネイルビューアを持った画像ビューア。 danpeiでも、サムネイルがこのくらい軽かったらねえ。。。



tsushiro.s, 2003-2011.