fbpx

メニュー

特定のフォルダのPNG画像を全部最適化するMac用ドロップレット

高橋文樹 高橋文樹

この投稿は 11年半 前に公開されました。いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。

最近早起きなので、ちょっとしたユーティリティーを作りました。もしかしたらすでに存在しているかもしれませんが、今朝MacOSにOptiPNGをインストールしてコマンドでPNG画像をまとめて軽量化というエントリーを見てGUIでできたらいいなーと思ったので作りました。

用途
特定のフォルダ以下に存在するPNG画像を最適化する
必要構成
Mac OS X 10.7以上を使っていて、macports経由でoptiPNGをインストール済み(詳しくは上記エントリー参照)

使い方

OptiPNG.zipをダウンロードして解凍、中にあるOptiPNG.appをFinderのツールバーにドラッグ&ドロップします

OptiPNGをツールバーに追加
OptiPNGをツールバーに追加

ツールバーにあるOptiPNGのアイコンの上に最適化したいPNG画像が含まれているフォルダをドラッグ&ドロップ

最適化したい画像フォルダをD&D
最適化したい画像フォルダをD&D

以上です。Growlに対応させようと思いましたが、めんどうだったのでやめました。

Automatorでできるこんなこと

このアプリ(というか、ドロップレット)はAutomatorで作りました。Automatorは結構便利で、色んなことで来ます。特にファイルのリストを取得するのが簡単なので、Unixコマンドを組み合せると色んなアプリがさくっと作れます。

意外と便利なAutomator
意外と便利なAutomator

今回はPNGの最適化と組み合わせましたが、他にも色んなUnixコマンドと組み合せることができます。今回書いたワークフローは以下のようなものですが、他でも代替同じです。

  1. Automatorを起動して新規アプリケーションを作成
  2. フォルダの内容を取得を配置
  3. Finder項目にフィルタを適用を配置し、拡張子pngでフィルタリング
  4. Applescriptを実行を配置

これでApplescriptはファイルのリストを受け取ります。今回のアプリでは、ファイルリストのそれぞれに対して以下のシェルコマンドを発行しているだけです。

optipng $FILE_NAME

ただし、ApplescriptのファイルパスはPOSIXじゃなかったような気がするので、そこで一工夫必要です。また、シェルコマンドも環境変数が適用されないので、単純にoptipngとやっても、command not foundになってしまいます。以下のようにやるといいでしょう。

on run {input, parameters}
	--inputにファイルのリストが渡ってきます
	repeat with file_alias in input
		--ファイルのエイリアスをPOSIXパスに変換
		set file_path to (POSIX path of file_alias)
		--シェルコマンドを発行(ログインシェルではないので、コマンドは絶対パス)
		do shell script "/opt/local/bin/optipng " & file_path
	end repeat

	--通知本文を設定
	set notify_text to "処理が終わりました"

	--ダイアログ
	display dialog notify_text giving up after 2 buttons {"OK"} default button 1

	return input
end run

ポイントはコマンドをフルパスで書くことと、コマンドを発行する前にファイルパスを変換することでしょうか。

これを応用して do shell command 以下の部分を書き換えれば、色んなドロップレットが作れます。Webサイトを本番環境にデプロイする前にポチッと押すだけになります。

  1. 特定のフォルダの.svnフォルダを全部削除する
  2. 特定のフォルダのCSSやJSすべてをgzipやYUI CompressorCSS compressorで圧縮する
  3. QuickTimeやFFmpegを呼び出して動画の形式を変換する

そうえいば、3とかは昔仕事で作りましたね。泣きながらソフトバンク向けのH264ハイスペック動画を出力したのはいい想い出です。

もっとも、Unixコマンドをインストールしないといけないことに変わりはないので、「誰でも使える」という感じではないですね。もし「誰でも使える」ことを目指すのなら、時間をかけてCocoaで作り、必要なコマンドは全部バンドルして、AppStoreで売るのがいいと思います。

おまけ アイコン変えたい

同梱したアイコンは僕が作ったものですが、ダサいので変えたいという場合は以下の方法で。

  1. OptiPNG.appを右クリックして、「パッケージの内容を表示」をクリック
  2. ResourcesフォルダにあるAutomatorApplet.icnsをIconComposer.app(Xcodeをインストールするとついてくるはず)で開く
  3. ドラッグ&ドロップで画像を配置していき、保存

注意点としては、アプリをAutomatorで編集してしまうとアイコンが元に戻っちゃうことでしょうか。

すべての投稿を見る

高橋文樹ニュースレター

高橋文樹が最近の活動報告、サイトでパブリックにできない情報などをお伝えするメーリングリストです。 滅多に送りませんので、ぜひご登録お願いいたします。 お得なダウンロードコンテンツなども計画中です。