『大量に撮った写真にバッチ処理?でロゴを入れる』 の クチコミ掲示板

 >  >  > クチコミ掲示板

『大量に撮った写真にバッチ処理?でロゴを入れる』 のクチコミ掲示板

RSS


「画像編集ソフト」のクチコミ掲示板に
画像編集ソフトを新規書き込み画像編集ソフトをヘルプ付 新規書き込み



ナイスクチコミ4

返信19

お気に入りに追加

解決済
標準

画像編集ソフト

こんにちは。

サークルや友達で集まったときにデジカメ写真をたくさん撮り、それをソーシャルネットワーキングサイトにアップロードしています。
他の人が撮った同じような構図のものを区別するために、自分で撮った写真にかわいくロゴと日付・場所を入れているのですが、
今は無料ソフトを使っています。
試行錯誤の上、やっと1枚に10分くらい掛かって出来るようになりましたが、とても撮影枚数に追いつきません。
そこで、「大量に撮った写真にバッチ処理でロゴを入れる」ソフトと方法を探しています。
細かい条件は下に書きました。

条件
1. ロゴは全ての画像に同じもの2つずつ、それぞれ位置を指定して貼り付けたい。
 2つのロゴ画像はSVG形式で別々に前以って用意してあります。
 ロゴは透過背景にしたいので、SVG形式が良いということまでは調べました。

2. クロップをすることも多いので、デジカメで撮った写真はサイズが一定でない。その結果、端からの位置をパーセントで指定したい。
 (パーセントが無理なら、画像のピクセルサイズを読み込んでロゴ貼り付け位置をピクセルで計算して指定したい。)

3.ロゴのサイズもクロップした後の画像サイズに合わせて(比例して)小さくしたい。
 つまり、クロップされた画像のサイズが元画像からのパーセントでわかるようにして、それを使ってロゴのサイズを小さくしたい。

4. ロゴ貼り付け位置の指定が、1つは左上の角からと、もう1つは右下の角からとの両方出来ると良い。
 (出来ない場合は、写真画像が縦長か横長かを自動判別して、それによって指定位置を変更したい。)

以上で、条件1と2は絶対に欲しいです。
「このソフトだったら、こういう方法で出来るよ」という感じで教えていただけませんか?

無料のソフト、もしくは Photoshop かIllustrator だと嬉しいです。
(無料のソフトを教えてもらえると、気軽に試せるのが利点で、デスクトップとノートパソコンに入れられます。
 Photoshop とIllustrator は、自分はまだ使ったことがありませんが、学校で使えます。
 それにネットで検索して自分で出来るようになることが多そうなので考慮に入れています。)

どうかよろしくお願いします。

書込番号:12122504

ナイスクチコミ!0


返信する
さん
クチコミ投稿数:22948件Goodアンサー獲得:6294件

2010/10/28 02:46(1年以上前)

ConvertImageというソフトを使ってみましたがシェアウェアだったので他のソフトが無いか調べ中です。
Inkscapeがjpegに対応してないのが恨めしい。
コマンドラインで画像変換できるソフトがありましたら教えて下さい。

とりあえず以下のソフトでスクリプトを組めば自動的にロゴを入れられると思います。
価格.comの掲示板だと変に改行されてしまうので、スクリプトは画像を参照して下さい。


ActivePerl
http://www.activestate.com/activeperl/downloads

Inkscape
http://inkscape.org/download/?lang=ja

GetPicSize.pl
http://cachu.xrea.jp/perl/GetPicSize.html

あとはPNG→JPEG画像変換ソフトが必要
下のスクリプトはConvertImageが入ってないと動きません。


############ a.pl というファイルを作成 ##############

# GetPicSize.pl を a.pl と同じフォルダに入れる
require 'GetPicSize.pl';

# 元画像フォルダ
$dir1='D:\pic1';
# 出力フォルダ
$dir2='D:\pic2';
# Inkscapeフォルダ
$inkscape='C:\Program Files\Inkscape\inkscape.exe';

opendir(OP,"$dir1");
while($tmp=readdir OP){
$tmp=~/(.*?)\.jpg$/ and push(@file,$1);
}
closedir OP;

foreach $tmp(@file){
($format, $width, $height)=&GetImageSize("$tmp.jpg");

open(WR,">$dir1\\$tmp.svg");

print WR<<EOF;
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="default" width="$width" height="$height">
<image xlink:href="$tmp.jpg" x="0" y="0" width="$width" height="$height"/>
<rect x="85" y="28" width="60" height="15"/>
</svg>
EOF

close WR;

system("inkscape -f $dir1\\$tmp.svg -e $dir1\\$tmp.png");
system("convertimage /S \"$dir1\\$tmp.png\" /T \"$dir2\\$tmp.jpg\" /F8 /C1 /4 78");
unlink "$dir1\\$tmp.png","$dir1\\$tmp.svg";
}


############ 終了 ##############

書込番号:12125480

Goodアンサーナイスクチコミ!1


クチコミ投稿数:15件

2010/10/28 09:02(1年以上前)

甜さん、とっても丁寧にありがとうございます!
プログラムまで書いてもらって感激です。

ConvertImage はこれでしょうか?
http://www.softpedia.com/get/Multimedia/Graphic/Image-Convertors/Convert-Image.shtml
200ドルはちょっと高いですね。
もし使い方が一番簡単なソフトなら魅力的ですが。
永遠と手作業でやっていることを考えると、その分の時間にバイトのシフトを入れた方が安く付きますし(汗)

以下の4つが必要ということですね?
- ActivePerl
- Inkscape
- GetPicSize.pl
- a.pl

C言語は習ったことがあるのですが、Perl は聞いたことしかありませんが同じ感じですか?。
ActivePerl をインストールして、その中でa.pl を実行すればいいんですよね?
これから試してみます。

PNGで出力ですね。
PNGからJPEG画像への変換は大丈夫です。

書込番号:12126001

ナイスクチコミ!0


クチコミ投稿数:15件

2010/10/28 10:51(1年以上前)

教えてもらっている方はまだ試行錯誤中ですが、調べていたらInkscape用でこんなものを見つけました。
InkscapeBatch
http://sourceforge.net/projects/inkscapebatch/

機能説明とかマニュアルとか無いみたいで、使えるかわかりません。
しかも、Inkscape のポータブルだと、このプログラムはうまく検知してくれないようです。
InkscapeBatchをインストールしてみたのに駄目でした。
ポータブルでない方のInkscape でうまく動いたとして、それでも画像サイズを取得するのにはConvertImageは必要でしょうか?

書込番号:12126321

ナイスクチコミ!0


さん
クチコミ投稿数:22948件Goodアンサー獲得:6294件

2010/10/28 16:23(1年以上前)

InkscapeBatchはGUIアプリでかつInkscapeでできる画像変換をバッチ処理するだけのソフトなようです。
CUIアプリが必要なことと、Inkscape自体がコマンドラインからの操作が可能なので今回は役には立ちません。
画像サイズの取得はGetPicSize.plで行っていて、Perlだけで取得してるのでInkscapeなどは関係ありません。

Perlは、違う点は沢山ありますがCみたいなものだと思って下さい。
Windowsならplファイルをクリックすれば実行されるので、コマンドラインを呼び出す必要もありません。

後からImageMagickというフリーソフトを使ったらうまくjpegに変換できました。
ところでロゴの大きさと位置はどのような計算式で求めればいいのでしょうか?
自力でPerlスクリプトを修正するのでしたら問題ないのですが。

参考までにPerlのリファレンスマニュアルを。

http://www.nwt.jp/document/perlfunc/index.htm

書込番号:12127523

Goodアンサーナイスクチコミ!1


クチコミ投稿数:15件

2010/10/29 01:04(1年以上前)

一番最初のお返事の中で、「下のスクリプトはConvertImageが入ってないと動きません。」とあったのを
「画像サイズの取得にConvertImage を利用している」と勘違いしていました。
正しくは、「画像サイズの取得はGetPicSize.pl だけで行っている」んですね。
ということは、a.pl の最後の部分でPNG からJPG に変換している部分を取り除くと、
ConvertImage は要らないということですか?
それなら、別のソフトを使ってやれるので200ドルも払わなくていいですね。
私は「藤 -Resizer -」というソフトを使ったことがありますので、Perl のプログラムとは別でも構いません。
ImageMagick はもっと機能があって便利そうですね。

Perl はファイルをクリックするだけで良いということで安心しました。
授業でC言語を習っただけなので、あまり難しい操作は知りませんから。

ロゴの大きさと位置の計算式
-------
Inkscape では、写真の画像を(x, y) = (0, 0) に置くと、左下の角が座標の原点になりますね。
それを利用して、操作が簡単になるように考えてみました。

まず、画像サイズが 幅 W_photo で高さ H_photo だと取得できたとします。
1つ目のロゴのサイズは 幅 W_logo1、高さ H_logo1 で用意します。

ロゴの大きさは、写真画像サイズに比例して縮小。
W_logo1 = W_logo1_original * (W_photo / 4000)
H_logo1 = H_logo1_original * (H_photo / 3000)

位置は、写真の左上の角に、ロゴの左上の角を合わせる。
(x_logo1, y_logo1) = (0, H_photo - H_logo1)


同じようなことを2つ目のロゴにもする。
W_logo2 = W_logo2_original * (W_photo / 4000)
H_logo2 = H_logo2_original * (H_photo / 3000)
(x_logo2, y_logo2) = (W_photo - W_logo2, 0)
-------
こんな感じで出来るでしょうか?

書込番号:12130127

ナイスクチコミ!0


さん
クチコミ投稿数:22948件Goodアンサー獲得:6294件

2010/10/29 02:45(1年以上前)

もうConvertImageは完全に要りません。
その代わりImageMagickの方をインストールして下さい。
無くてもいいんですが今回は非常に便利なので。

一応それらしいものは出来たのですが、SVG内でのimageタグでsvgファイルを指定したものが描画されずに困っています。
直接SVGソースにロゴデータを埋め込んで対処しようと試みました。
下のPerlスクリプト内にsymbolタグを使ってる部分がありますが、そこにロゴデータを入れて下さい。
外部svgファイルを参照できればいいんですけどimageタグ以外に何か方法があるでしょうか?
下記ページを参考にSVGを勉強してみましたが何故かimage xlink:hrefだけ駄目でした。

http://www.marenijr.net/p/svg/003/02.html

それと、SVGでは原点は左上でした。
一応修正して左上と右下にロゴを持ってくるようにしました。

下記Perlスクリプトソースは掲示板の仕様上、やや文字化け?気味なので添付画像を参考にして下さい。
$dir1には元画像を置いてあるフォルダパスを指定、$dir2は可能であれば空フォルダを指定した方がいいです。
ロゴサイズ(W_logo1_original等)も適当に200*200にしましたが、適宜修正を。


########## ここから a.pl #############

require 'GetPicSize.pl';

########### 各種設定 ###########
#
# 元画像フォルダ
$dir1='D:\pic1';
# 出力フォルダ
$dir2='D:\pic2';
# XPでは以下の設定でいいが、7だと違うかもしれない
# Inkscape.exeのパス
$inkscape='C:\Program Files\Inkscape\inkscape.exe';
# ImageMagickのパス
$imagemagick='C:\Program Files\ImageMagick-6.6.5-Q16\convert.exe';
# logo1、logo2のサイズ
$W_logo1_original=200;
$H_logo1_original=200;
$W_logo2_original=200;
$H_logo2_original=200;
#
#################################

opendir(OP,"$dir1");
while($tmp=readdir OP){
$tmp=~/(.*?)\.jpg$/ and push(@file,$1);
}
closedir OP;

foreach $tmp(@file){
($format, $W_photo, $H_photo)=&GetImageSize("$dir1\\$tmp.jpg");

$W_logo1 = $W_logo1_original * ($W_photo/4000);
$H_logo1 = $H_logo1_original * ($H_photo/3000);
($x_logo1, $y_logo1) = (0, 0);

$W_logo2 = $W_logo2_original * ($W_photo/4000);
$H_logo2 = $H_logo2_original * ($H_photo/3000);
($x_logo2, $y_logo2) = ($W_photo - $W_logo2, $H_photo - $H_logo2);

open(WR,">$dir1\\$tmp.svg");

print WR<<EOF;
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="default" width="$W_photo" height="$H_photo">
<image xlink:href="$tmp.jpg" x="0" y="0" width="$W_photo" height="$H_photo"/>
<use x="$x_logo1" y="$y_logo1" xlink:href="#figs1" width="$W_logo1" height="$H_logo1"/>
<use x="$x_logo2" y="$y_logo2" xlink:href="#figs2" width="$W_logo2" height="$H_logo2"/>

<symbol id="figs1" width="70" height="70">
<circle cx="50" cy="50" r="20"/>
</symbol>
<symbol id="figs2" width="70" height="70">
<rect width="50" height="50"/>
</symbol>

</svg>
EOF

close WR;

system("\"$inkscape\" -f $dir1\\$tmp.svg -e $dir1\\$tmp.png");
system("\"$imagemagick\" \"$dir1\\$tmp.png\" \"$dir2\\$tmp.jpg\"");
unlink "$dir1\\$tmp.png","$dir1\\$tmp.svg";
}

書込番号:12130368

ナイスクチコミ!0


manamonさん
殿堂入り クチコミ投稿数:2744件Goodアンサー獲得:161件

2010/10/29 03:45(1年以上前)

なんだか難しい話が..^^;
中身は殆どPhotoshopのアクションですが、一応1〜4をクリアできるかと
http://wckwrmui.xxxxxxxx.jp/logo.html
余計な点、足らない点があると思いますけど私の環境では一応動作してます(^^ゞ

書込番号:12130417

Goodアンサーナイスクチコミ!0


クチコミ投稿数:15件

2010/10/29 18:30(1年以上前)

甜さん、ありがとうございます。
もうちょっとみたいで緊張してきました。

> 外部svgファイルを参照できればいいんですけどimageタグ以外に何か方法があるでしょうか?

よくわかっていないんですが、
Inkscape のインポートのコマンドで.svg のファイルを挿入するのでは駄目ですか?


manamonさん、ありがとうございます。
Photoshop でもできるんですね。
難しくてほとんど意味が取れなくて悲しいですけど。
コメントをつけてもらえませんか?
アクションのプログラムということですが、どういう操作で実行できますか? 
バッチ処理のための写真のフォルダーを指定する箇所がないようですし。
.eps なのは.svg が使えないためですか?

書込番号:12132826

ナイスクチコミ!0


さん
クチコミ投稿数:22948件Goodアンサー獲得:6294件

2010/10/29 21:39(1年以上前)

一応、既に出来てると言えば出来てる状態です。
ファイルを作るの面倒でしょうからアップロードしてみました。

http://www.dotup.org/uploda/www.dotup.org1223236.lzh.html

パスワードはkakakuです。(現在混んでて重いようです)
a.pl をメモ帳などのテキストエディタで開いて、「各種設定」の部分を設定すればOKです。
正常に動けば指定したフォルダ内のすべてのjpeg画像の左上と右下に黒丸と黒四角が描画されます。
あとは黒丸と黒四角をロゴのSVGソースに置き換えるだけです。


>Inkscape のインポートのコマンドで.svg のファイルを挿入するのでは駄目ですか?

GUI操作ならそれでOKなんですけどコマンドラインから使うとなるとちょっと無理な気がします。
ひょっとしたら出来るのかもしれませんが、コマンドがさっぱり分かりません。

書込番号:12133768

ナイスクチコミ!1


manamonさん
殿堂入り クチコミ投稿数:2744件Goodアンサー獲得:161件

2010/10/29 21:44(1年以上前)

コメント付けられるほど詳しくありませんけど、Photoshopでやってみました。
バージョンはCS5です。確認ができないのですが、比較的新しいバージョンだと実行できると思います。
大半が、スクリプティングサポートプラグイン(ScriptListener.8li)を使って出力したものです。
内容はアクションスクリプトと同等だと思いますが、条件分岐等を加えるといろいろなことができると思います。

(Windows環境と仮定。Macは不明)
使い方ですが、単体では使えません(使用状況によって内容の編集も必要です。)
一枚の画像に対しても、バッチでもPhotoshop経由で行ないます。
任意の場所に.jsx(スクリプト)ファイルを保存して、画像を開き、ファイル>スクリプト>参照 からスクリプトを読み込みます。
すると、C:\pict\logo.eps と C:\pict\logo2.eps の両ファイルが読み込まれて、スクリプトで指定した位置・サイズで配置されます。
この、スクリプトの実行やファイルの保存等をアクションとして記録すればBridgeとかPhotoshopからバッチ処理ができます。
.svgではなく、.epsとしたのは Photoshopに読み込ませるためです。
epsでも透過情報は扱えると思うので、問題なしとしました。
Inkscapeもepsを扱えるので、互換もあると思います。

読み込み元のフォルダーは、Photoshopのバッチ処理で指定ができるので無くても大丈夫です。
アクションはドロップレットに登録することもできるので画像やフォルダをドロップして処理完了とすることもできます。
難点?としては、Photoshop経由でスクリプトを実行するので動作速度が少し遅いことでしょうか。
大量の画像だったり、大きな画像だと動作が緩慢になりやすいと思います。
Perlも含め、スクリプトはさっぱりです^^;

書込番号:12133800

ナイスクチコミ!1


クチコミ投稿数:15件

2010/11/04 19:26(1年以上前)

甜さん
ちょっと試してみましたが時間が無かったので途中で諦めました。
土日に再挑戦する予定です。

manamonさん
自動生成されたスクリプトだったんですね。
どうりでプログラムとして読めなかったわけです。
まだ数値の変更の仕方がわかっていないので、こちらも後で試してみます。
Photoshop は沢山機能があるみたいでちょっと大変そうです。

書込番号:12164612

ナイスクチコミ!0


manamonさん
殿堂入り クチコミ投稿数:2744件Goodアンサー獲得:161件

2010/11/04 20:28(1年以上前)

あれから内容を少し変更したんですが、まだロゴの配置が不完全なので 計算を複雑にする必要がありそうです。
今のままだと、簡易プロンプト画面が毎回表示されるので有効にしてません。
数値はメモ帳等で編集更新します。
使っている機能は、「配置」と「自由変形」、ロゴサイズを揃えるのにdpi変更 です。


書込番号:12164906

ナイスクチコミ!0


クチコミ投稿数:15件

2010/11/20 02:33(1年以上前)

甜さん

> 正常に動けば指定したフォルダ内のすべてのjpeg画像の左上と右下に黒丸と黒四角が描画されます。

ここまでは出来ました。

> あとは黒丸と黒四角をロゴのSVGソースに置き換えるだけです。

具体的にどうすればいいですか?
<use xlink:href = " " /> の中にSVG のファイル名を入れたり色々と変更してみましたが駄目でした。
<use> の他にも <image> タグがあるみたいですが、こちらもうまく行きません。

書込番号:12242989

ナイスクチコミ!0


さん
クチコミ投稿数:22948件Goodアンサー獲得:6294件

2010/11/20 12:35(1年以上前)

<symbol id="figs1" width="70" height="70">
<circle cx="50" cy="50" r="20"/>
</symbol>
<symbol id="figs2" width="70" height="70">
<rect width="50" height="50"/>
</symbol>

の部分を書き換えるだけです。
<symbol id="figs1" 〜></symbol>の間にはさんだものはlogo1扱い、
<symbol id="figs2" 〜></symbol>の間にはさんだものはlogo2扱いです。
この辺は普通のSVGと同じです。

書込番号:12244231

ナイスクチコミ!0


クチコミ投稿数:15件

2010/11/21 00:39(1年以上前)

甜さん

<symbol ...
...
</symbol>
の部分の書き換えは、そこに入れたい形や文字のタグをいれるということですか? こちらが用意したファイル(.svg など、背景が透明になるもの)を挿入するようにしたいのですが。
<circle ... > のかわりに<image ...> を入れてもa.pl が途中で終わってしまうみたいです。
(perl はエラーメッセージがでないようなのでデバッグが難しいです。)

他のやり方も試していますが別ファイルの挿入ができません。
a.pl が途中で終わってしまうか、「Linked Image Not Found」 というエラーが画像に埋め込まれてしまいます。

例えば、
<use xlink:href="#figs1" / >
のところを、
<image xlink:href="logo1.svg" / >
にして、さらに、
<symbol ...
...
</symbol>
の部分を全部削除してみたんですが、うまく行きません。

どういうやり方が正当なやり方ですか?
今までやったことないので戸惑っています。

書込番号:12247698

ナイスクチコミ!0


さん
クチコミ投稿数:22948件Goodアンサー獲得:6294件

2010/11/21 01:18(1年以上前)

<image xlink:href="logo1.svg"
というタグ自体がInkscapeが悪いのか人間が悪いのか、受け付けてくれません。
もし上記のタグが使えれば非常に単純なものになったのですが。

logo1.svgというファイルでロゴファイルを保存しているなら、ロゴマーク部分のタグを全部コピペしてきて
<symbol>タグにはさめばうまくいくと思います。

perlでエラーメッセージを出す方法は、ファイル名を指定して実行でcmdを出して
コマンドプロンプトから a.pl などを実行すれば出せます。

書込番号:12247892

ナイスクチコミ!0


クチコミ投稿数:15件

2010/12/04 12:55(1年以上前)

甜さんのプログラムで試行錯誤して出来ました!
本当にありがとうございます。
ロゴを付けるのがとても楽になりました。

ただ、普段はいいのですが、一つだけ問題がある時があります。
姉が持っているニコンの一眼レフのカメラを使って Adobe RGB という色空間?の設定で写真を撮るときがあります。
その写真をInkscape で保存すると、色が少し暗なって微妙に灰色っぽくなるときがあります。
肌色とかが薄暗くなる感じです。
Color management (= 色の管理) の設定が良くないのかと思って、色々試しても正しい設定の選択が見つかりません。
この問題は、別の問題になってしまうので、また別のスレッドで質問させてもらうかもしれません。

manamonさんのPhotoshop のプログラムも使えるようになりたいですが、Photoshop 自体が大変ですね。
もうちょっとPhotoshop の使い方を勉強してから再挑戦する予定です。
Photoshop はAdobe 製品なので、Adobe RGB との相性も良さそうですし。

書込番号:12318314

ナイスクチコミ!0


manamonさん
殿堂入り クチコミ投稿数:2744件Goodアンサー獲得:161件

2010/12/05 06:22(1年以上前)

Photoshopは慣れれば普通に使えると思いますよ。
操作方法を簡単にまとめたのでよければどうぞ
http://mmid.web.fc2.com/logo.html

Inkscapeのカラマネ設定は、「Inkscapeの設定」と「ドキュメントの設定」にありますが
これがどう作用するのかイマイチ掴めません。
Photoshopのカラマネは分かりやすいと思います

書込番号:12322269

ナイスクチコミ!0


クチコミ投稿数:15件

2010/12/06 04:29(1年以上前)

manamonさん、細かい説明をありがとうございます。
後で時間を作って勉強します。

書込番号:12327402

ナイスクチコミ!0


クチコミ一覧を見る


価格.com Q&Aを見る

クチコミ掲示板検索



検索対象カテゴリ
を対象として

新着ピックアップリスト

ピックアップリストトップ

新製品ニュース Headline

更新日:5月26日

新製品ニュースを見る

クチコミ掲示板ランキング

(パソコン)

ユーザー満足度ランキング