Asumac ブログ始めました。

なんとなく 日々 なんとなく はじめてみます。

Aperture iPhotoで印刷時日付を付けたいが・・・。

2010-03-08 01:08:18 | Weblog
印刷時に日付をつけたいが、Aperture iPhotoでは無理そうなので印字する画像に直接合成して印字する方法を考えた。
MacPortでImageMagickをインストールして、使用する。
とりあえず、動けばいいと作ったので注意点あり。
EXIFの回転タグで画像が回転してると正しく動作しない。
基本的には、Aperture iPhotoで加工後書き出した画像に日付を合成することを想定している。
日付位置は、L版サイズを想定。
画像の比率と用紙の比率の差異を調整している。
縦、横は自動判定している。(つもり)
Automatorで自動化する事を前提にしている。

印刷する用紙の縦横の比率は、$Y_T $X_Tの値を変更するとOKのはず。
フォントもFont Bookのフォント情報にある場所を指定すると変更できる。

印刷するためだけに新たにファイルを作るのはめんどくさいけど、なんか他にいい方法はないものか?
Apertureあたりで印刷時に日付つけてくれないかぁ?日本独自の文化みたい。
ちなみに、他のソフトを試してみたが印字すると色が良くなかったり、縦横が判断されなかったりといまいち使い勝手が・・・。
Apertureなどで対応するまでしのぎます。

ソース------------------------------------------------------------------------------------
foreach (@ARGV) {
$IN = $_;
#print $IN."\n";
$FOLDER = $IN;
$FOLDER =~ s/(.*\/)(.*\..*)$/$1/;
$FOLDER = $FOLDER."DATE\/";
#print $FOLDER."\n";
if(-d $FOLDER){
}else{
        system "mkdir ".$FOLDER;
};

$OUT = $IN;
$OUT =~ s/(.*\/)(.*\..*)$/$2/;
$OUT =~ s/\.jpg$|\.JPG$//;
$OUT = $OUT."_.jpg";
$DATE = `/opt/local/bin/identify -format "%[exif:DateTime]" $IN`;
chomp($DATE);
$DATE =~ s/(\d\d\d\d:\d\d:\d\d)\s.*$/$1/;
$DATE =~ s/:0/:/g;
$DATE =~ s/:/\//g;

$WIDTH = `/opt/local/bin/identify -format "%[exif:ExifImageWidth]" $IN`;
chomp($WIDTH);

$LENGTH = `/opt/local/bin/identify -format "%[exif:ExifImageLength]" $IN`;
chomp($LENGTH);

if($WIDTH > $LENGTH){
        $Y_T = 89;
        $X_T = 127;
}else{
        $Y_T = 127;
        $X_T = 89;
};

$Y_H = int($WIDTH/$X_T*$Y_T);
$X_H = int($LENGTH/$Y_T*$X_T);
$MARGIN = 0;
if($X_H > $WIDTH){
        $Y = $Y_H;
        $X = $WIDTH;
        if($Y>$X){
                $SIZE = int($X/50);
                $MARGIN = $SIZE*2;
        }else{
                $SIZE = int($Y/50);
                $MARGIN = $SIZE*2;
        };
        $MARGIN_Y = $MARGIN + (($LENGTH - $Y_H)/2);
        $MARGIN_X = $MARGIN; 
}else{
        $Y = $LENGTH;
        $X = $X_H;
        if($Y>$X){
                $SIZE = int($X/50);
                $MARGIN = $SIZE*2;
        }else{
                $SIZE = int($Y/50);
                $MARGIN = $SIZE*2;
        };
        $MARGIN_Y = $MARGIN;
        $MARGIN_X = $MARGIN + (($WIDTH - $X_H)/2); 
};


$COMMAND = '/opt/local/bin/convert -font \'/Library/Fonts/ヒラギノ角ゴ Pro W6.otf\' -fill \'OrangeRed\' -pointsize \''
            .$SIZE.'\' -gravity \'southeast\' -draw \'text '.$MARGIN_X.",".$MARGIN_Y.' "'.$DATE.'"\' '.$IN." ".$FOLDER.$OUT;
system $COMMAND;
#print "LENGTH ".$LENGTH." =>Y $Y $MARGIN_Y";
#print "\n";
#print "WIDTH  ".$WIDTH ." =>X $X $MARGIN_X";
#print "\n";
};