Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

画像の batch 処理 (imagemagick convert)

176 views
Skip to first unread message

Shinichiro HIDA

unread,
Jan 15, 2004, 8:03:35 PM1/15/04
to
飛田と申します。

Windows 上に ImageMagick を install し、その convert を利用して、デジ
カメで撮影された画像を出来るだけ簡単に Web での利用に敵したサイズ
200x150 程度に縮小加工、および、適当なファイル名に変換したいと考えてい
ます。

実際には、PC、Windows に全く詳しくない方に上記作業を行なって貰う事にな
ります。

そこで、Windows 用の ImageMagick を手元の Windows2000 上に入れてみた所、
あっさりと入って動いたので、convert コマンドをバッチファイルとして用意
しておき、デジカメで撮影した任意の画像ファイルをそのバッチファイルにド
ラッグ&ドロップしてもらい、username-yyyymmdd-nnnn-s.jpg というようなファ
イル名として、My Pictures\web\ などのディレクトリに出力したいと考えて
います。

あまり Windows を利用していないのに加え、バッチファイルを書いた経験も
ほとんどないのですが、Web 上で調べた情報から、みようみまねで、次のよう
なものを書いては見たのですが、PATH の問題からか、コマンドプロンプトか
ら引数としてカレントディレクトリのファイル名を与えると動きますが、同じ
ものをドラッグ&ドロップすると、加工された画像は出力されません。これは
どこを修正すれば良いのでしょうか?

;; なお、画像とバッチファイルは同じディレクトリ(*1)に置いてあります。
;; (*1) c:\Document and settings\...\My Document\My Pictures\

また、Windows98 や WindowsXP のユーザもいる(多分こっちの方が多い && 手元に
は環境がありません)ので、その上でも動かせると良いのですが、可能でしょ
うか?


@echo off

rem imageresize.bat
rem
rem Resizing photo took with digitalcamera, *.jpg or *.JPG to 200x150 with
rem ImageMagick's convert.
rem
rem The filename named by digitalcamera, would be ex. dscn00043.jpg,
rem change to 'username'-'yyyymmdd'-0043-s.jpg for output.
rem
rem for Windows2000
rem
rem input argument filename
rem output small (200x150) jpg

rem 'username' にはあなたのものをセットして下さい。
set username=shinichiro
set inputfile=%~nx1%
set inputpath=%1%
set year=%date:~2,4%
set month=%date:~7,2%
set day=%date:~10,2%
set outputfile=%username%-%year%%month%%day%-%inputfile:~4,-4%-s.jpg
set imagick=convert

if "%inputfile:~-4%" == ".jpg" goto resize
if "%inputfile:~-4%" == ".JPG" goto resize
goto ftypeerror

:resize
echo jpeg 画像を 200x150 に縮小します。
echo 現在処理中です。しばらくお待ちください...
%imagick% -resize 200x150 -sharpen 40 -gamma 1 %inputpath% %outputfile%
echo %outputfile% を出力しました。
goto EOF

:ftypeerror
echo 指定されたファイルは jpeg 形式の画像ではないようです。

:EOF

pause


宜しくお願い致します。

--
Shinichiro HIDA
sta...@po10.lcv.ne.jp

Shinichiro HIDA

unread,
Mar 3, 2004, 3:03:33 AM3/3/04
to Shinichiro HIDA
飛田です。

>>>>> In <87ad4ou2l4.wl%sta...@po10.lcv.ne.jp>

>>>>> Shinichiro HIDA <sta...@po10.lcv.ne.jp> wrote:
> 飛田と申します。

> Windows 上に ImageMagick を install し、その convert を利用して、デジ
> カメで撮影された画像を出来るだけ簡単に Web での利用に敵したサイズ
> 200x150 程度に縮小加工、および、適当なファイル名に変換したいと考えてい
> ます。

> 実際には、PC、Windows に全く詳しくない方に上記作業を行なって貰う事にな
> ります。

[...]

これですが、Ruby スクリプトで書いて、Exerb というもので .exe に変換し
利用しようとしています。手元の Windows 2000 では問題なく動作するのです
が、某所の Windows 98 でテストした所、どうも convert に PATH が通って
いない為に動作していません。

Windows 98 が手元にない(まともに使った事ない)ので出来れば教えて頂きた
いのです。

Windows 98 上で ImageMagick の convert.exe へ PATH を通す為に、
C:\AUTOEXEC.BAT を編集してみました。

これ、C:\Program Files\ImageMagick-5.5.7-q8\convert.exe がその実体とい
う事で、AUTOEXEC.BAT に、

SET PATH=[...];C:\Program Files\ImageMagick-5.5.7-Q8

として、[...] の既存の物に追加してみましたが、DOS プロンプトから set
や path してもどうも効いてないようです。

ひょっとして、Windows 98 の AUTOEXEC.BAT って、ロングファイルネーム使
えないのでしたっけ?


--
Shinichiro HIDA
sta...@po10.lcv.ne.jp

K.Moriyama

unread,
Mar 3, 2004, 7:38:46 AM3/3/04
to
森山です。

On Wed, 03 Mar 2004 17:03:33 +0900
Shinichiro HIDA <sta...@po10.lcv.ne.jp> wrote:

> う事で、AUTOEXEC.BAT に、
>
> SET PATH=[...];C:\Program Files\ImageMagick-5.5.7-Q8
>
> として、[...] の既存の物に追加してみましたが、DOS プロンプトから set
> や path してもどうも効いてないようです。
>
> ひょっとして、Windows 98 の AUTOEXEC.BAT って、ロングファイルネーム使
> えないのでしたっけ?

確認してみました。[ 使えない ]です。以下のように設定する
必要があるかと思います。

SET PATH=%PATH%;C:\PROGRA~1\IMAGEM~1.7-Q

フォルダ名は、頭6文字 + [ ~ ] + 番号に成ります

○ 番号は、頭6文字が同じ物がない場合は[ 1 ] になります。
○ 拡張子が有る場合は、最後の拡張子の頭3文字のみ
と成るようです。

# パスの設定を表示させるとロングファイルネームで、表示されます
# が、そのディレクトリ下の batファイル等は動作しません。
# で、フォルダ名を上記のように設定すると、動作します。

K.Moriyama

Shinichiro HIDA

unread,
Mar 3, 2004, 8:12:13 AM3/3/04
to K.Moriyama
飛田です。

>>>>> In <20040303213846....@ma.kcom.ne.jp>
>>>>> "K.Moriyama" <for...@ma.kcom.ne.jp> wrote:
> 森山です。

詳細な情報有難うございます。Web でごそごそ調べてみたのですが、いまいち
はっきりせず、確認とれませんでした。

;; Windows95 あたりで LFN 通るようになったと思い込んでて問題解決のため、
;; 全然違う方面をあたってました。

明後日、問題のマシンを触る事が出来ると思いますのでやってみます。

--
Shinichiro HIDA
sta...@po10.lcv.ne.jp

IIJIMA Hiromitsu

unread,
Mar 6, 2004, 4:22:18 AM3/6/04
to
いいじまです。

> > SET PATH=[...];C:\Program Files\ImageMagick-5.5.7-Q8
> >
> > として、[...] の既存の物に追加してみましたが、DOS プロンプトから set
> > や path してもどうも効いてないようです。
> >
> > ひょっとして、Windows 98 の AUTOEXEC.BAT って、ロングファイルネーム使
> > えないのでしたっけ?
>
> 確認してみました。[ 使えない ]です。以下のように設定する
> 必要があるかと思います。

ひょっとして、この件については「Program Files」の中の空白のほうが問題では
ないですか?
SET PATH=[...];C:\Progra~1\ImageMagick-5.5.7-Q8
でどうなりますか?

AUTOEXEC.BAT 内で LFN が使えないのは、別の理由によります。

○まず、LFN のディスク上の内部表現は Unicode(UTF-16LE という表記であっ
 てるかな?)になっています。Unicode と Shift_JIS(CP932)との相互変換
 機能は、Win32カーネルは持っていますが、DOS カーネルは持っていません。
○Windows 98 が起動したときには、まず DOS カーネルが起動してメモリドライ
 バなどを組み込んだあと、その上でシェル(command.com)を起動して AUTO
 EXEC.BAT を処理します。
○AUTOEXEC.BAT が終了したら、command.com が Win32 カーネルを起動して
 (この処理は command.com 内部にハードコードされています)、以後は
 Win32 カーネルが処理します。
○Windows の DOS 窓の上では、バッチファイル→command.com→Windows の DOS
 エミュレータ→Win32 カーネル、の順序で制御が渡ります。

というわけで、AUTOEXEC.BAT を処理する段階ではカーネルが Unicode を扱えな
いので、LFN は disable されているわけです。

========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp

Shinichiro HIDA

unread,
Mar 9, 2004, 9:16:43 AM3/9/04
to
飛田です。

;; フォロー有難うございます。

;; LFN を使わないようにして ImageMagick の convert にはパスが通ったも
;; のの、どうやら引数あるいは文字コードの扱い方で問題が残ってるようで...

>>>>> In <4049984A...@ht.sakura.ne.jp>

>>>>> IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> wrote:
> いいじまです。

> > > SET PATH=[...];C:\Program Files\ImageMagick-5.5.7-Q8

[...]

> > > ひょっとして、Windows 98 の AUTOEXEC.BAT って、ロングファイルネーム使
> > > えないのでしたっけ?
> >
> > 確認してみました。[ 使えない ]です。以下のように設定する
> > 必要があるかと思います。

> ひょっとして、この件については「Program Files」の中の空白のほうが問題では
> ないですか?

ファイル、もしくは ディレクトリ名に含まれる空白は "扱えない" と思った
方が良いですか? 引数もなんらかの処理が必要なのかなぁ...

> SET PATH=[...];C:\Progra~1\ImageMagick-5.5.7-Q8
> でどうなりますか?

ぉお、両方混ぜて使えるんですね... 思いもよりませんでした。

> AUTOEXEC.BAT 内で LFN が使えないのは、別の理由によります。

[...]

> というわけで、AUTOEXEC.BAT を処理する段階ではカーネルが Unicode を扱えな
> いので、LFN は disable されているわけです。

詳しく解説頂き有難うございました。Windows98 ではまだ DOS から起動して
いたんですね、知りませんでした。

起動後は Unicode になるって事は、ひょっとするとファイル名の扱いも
unicode 意識してないで Shift_JIS で行っちゃうとダメって事なのでしょう
か?

現状、教えて頂いた部分から、AUTOEXEC.BAT に 8+3形式 で指定する事で、
convert コマンドなどに PATH を通す事は出来ました。しかし現在テストして
いる ruby のコードは、手元の Windows2000 上では予期した通りに動いてく
れているのですが、Windows98上では未だ動作してません。

しかも、MS-DOS プロンプト から ruby.exe "script.rb" "hoge.jpg"として呼
んだ場合と、ショートカットへファイルをドロップした場合で結果が異なると
いう.. むぅ..

;; (何が|どこが) 悪いのか調査中。もう少し何か分かった段階で詳細報告し
;; ます。手強い.. > Windows98

--
Shinichiro HIDA
sta...@po10.lcv.ne.jp

IIJIMA Hiromitsu

unread,
Mar 9, 2004, 6:19:54 PM3/9/04
to
いいじまです。

> > というわけで、AUTOEXEC.BAT を処理する段階ではカーネルが Unicode を

> > 扱えないので、LFN は disable されているわけです。


>
> 詳しく解説頂き有難うございました。Windows98 ではまだ DOS から起動して
> いたんですね、知りませんでした。
>
> 起動後は Unicode になるって事は、ひょっとするとファイル名の扱いも
> unicode 意識してないで Shift_JIS で行っちゃうとダメって事なのでしょう
> か?

場合によってはそうなります。具体的には、ED40~ の「NEC 選定 IBM 拡張文字」
を使ったファイル名をつけて、そのあとからファイル名を取得すると、FA40~ の
「IBM 拡張文字」が返ってきます。

まあ、これはファイル名に限らず、色々な場所で発生する問題なのですが。

0 new messages