Mac OS X専用コマンド形式
サムネール画像作成 thmaker
概要
画像ファイルのサムネールを作成し、JPEGファイルとして保存するコマンドです。コマンドですが、QuickTimeを使っているため、Mac OS Xでしか稼働しません。
もともと…というか、かなり以前から、デジカメで写真撮影した画像を、サーバで管理してWebで参照できるようにするようなソフトを作っていたのですが、動作環境が限定されるので、とりあえず公開はしていませんでした。根幹部分はJavaだったのですぐにでもMac OS Xで動かすことは可能だったのですが、サムネール作成アプリケーションが、Classicだったのです。そこで、Mac OS Xでも動くサムネール作成ソフトを作った次第ですが、iPhotoなんかがでてしまったら、私のデジカメ写真整理ソフトは出番はないですね。もし、ご興味があるようなら、ソースを含めて差し上げてもかまいませんが、動作上の制約も多いため、サポートができませんから、基本的には公開はしません。
使用方法
ここから圧縮ファイルをダウンロードします。解凍し、そのファイルthmakerを適当なところにおいておきます。コマンドなので、Terminalで使うのが基本ですが、Cocoa、Carbon、AppleScript、Java、Perl等いずれも、外部コマンドの実行が可能となっています。ただ、CocoaやCarbonはソースをそのまま使った方が早いかも知れません。
以下はコマンドの使い方です。
thmaker [-w width] [-h height] [-o outFile] [-m mergin] [-r red] [-g green] [-b blue [-v] inFile
- inFil:元画像ファイル。スペースで区切って、複数の指定が可能
- witdh:(オプション)サムネイル画像の幅(ドット数)
- height:(オプション)サムネイル画像の幅(ドット数)
- outFile:(オプション)サムネイル画像のファイル
- mergin:(オプション)サムネイル画像の周囲の余白(ドット数)。既定値は0
- red, green, blue:(オプション)サムネイルの周囲の余白に塗りつぶす色をRGBで指定する。各原色の強さは0から255で指定する。既定値は (255,255,255) つまり白色。
- -v (オプション)読み込んだファイル名と、作成したサムネイルファイル名を標準出力に書き出す。
サムネイル画像ファイルの作成規則
- もし、-oオプションが指定されていれば、それに従う
- -oオプションがない場合には、元画像ファイル名の前にth_という文字列を前につけたものとなる。つまり元画像がPicture.jpgなら、サムネールファイル名は、th_Picture.jpgとなる。
- このとき、元画像があるフォルダに (psmade) という名前のフォルダがあれば、その中にサムネールファイルを作成する。このフォルダ名は半角のカッコで始まり、半角のカッコで終わるものである。
- もし、(psmade)という名前のフォルダがない場合には、元画像と同じフォルダにサムネールを作成する
- サムネールファイルのファイルタイプはJPEG、クリエイタはprevになる。つまり、Previewアプリケーションで開く書類となる。
サムネール画像のサイズ
- オプションでの指定が最優先される
- 高さと幅のいずれか、あるいは両方を指定しない場合には、元画像の縦横比を保持するのが原則となる
- 高さだけを指定した場合には、その高さのサムネールになる。横幅は縦横比一定の原則で自動的に決められる。
- 幅だけを指定した場合には、その幅のサムネールになる。高さは縦横比一定の原則で自動的に決められる。
- 高さも幅も省略した場合には、高さが48ドットになり、それに応じて縦横比が一定の原則に従って横幅が決められる。
制約等
- 元画像のフォーマットは、QuickTimeのGraphic Importerがサポートしている形式なら基本的にすべてOKのはずです(JPEGとPNG程度しかチェックしていませんが…)。JPEGのサムネール書き出しは、QuickTimeのGraphic Exporterを使っています。
- たとえば、元画像がPNGファイルで、サムネールファイル名を指定しないと、サムネールファイルの名前の拡張子は.pngになります。しかしながら、サムネールファイルの中身のフォーマットはJPEGで固定です。ただ、それでも開いてしまうことができるアプリケーションが多いことも事実ですが、念のため注意をしてください。必要ならファイル名を指定するようにしてください。
- ファイルのパスには、ホームディレクトリを示す~が使えません。Mac OS XのCarbonフレームワークの制約だと思われます。
- 変更等があれば、バージョン番号をつけますが、基本的には私的にはこれ以上のメンテナンスをするつもりはありません。
- このプログラム、ソースを利用して被った被害、不利益等について、作者はなんら責務はないものとします。ご利用はご自身の責任でお願いします。
ソースファイル
- ここをクリックするとC言語のソースファイルmain.cがダウンロードできます。ソースはこれだけです。
- フレームワークとして、Carbon.framework、QuickTime.frameworkを使うようになっていればコンパイルできます。
- プロジェクト等は適当に作成してください。
- QuickDrawの機能を使っているので、Windows向けにコンパイルすることはできないのじゃないかと思います。
コマンドの終了ステータス
- 0 正常終了。たぶん、サムネールは問題なく作られているでしょう。
- 1 元画像ファイルが見つからない。たぶん、パスを間違えて指定している。
- 2 元画像ファイルの情報をFSGetCatalogInfoで得ようとしたがエラーになっている。
- 3 サムネールファイルの情報をFSGetCatalogInfoで得ようとしたがエラーになっている。
- 4 GetGraphicsImporterForFileを元画像ファイルに対して利用したがエラーとなった。
- 5 GraphicsImportGetImageDescriptionを元画像ファイルに対して利用したがエラーとなった。
- 6 GraphicsImportSetBoundsRectでのエラー。普通は発生しないでしょう。
- 7 GraphicsImportSetGWorldでのエラー。メモリの問題などが考えられる。
- 8 GraphicsImportDrawでのエラー。ここでサムネール画像の描画を行っている。
- 9 OpenADefaultComponentでのエラー。Graphic ExporterのJPEGコンポーネントを取り出している部分。
- 10 GraphicsExportSetInputGWorldでのエラー。サムネール画像の存在するGWorldを取得している。
- 11 GraphicsExportSetOutputFileでのエラー。サムネールファイルをJPEG書き出しコンポーネントに設定している
- 12 GraphicsExportSetOutputFileTypeAndCreatorによってサムネールのファイルタイプとクリエイタを設定する部分のエラーが発生した。
- 13 GraphicsExportDoExportによって実際にサムネールを書き出すときにエラーが発生した。