画像処理ツール ImageMagick の便利なコマンド逆引きまとめ

ImageMagickでやりたい事からコマンドオプションを調べるための逆引き辞典的なまとめ。

詳細についてはImageMagick 日本語ドキュメントにまとめています。

基本

画像形式を相互変換する(GIFからJPEG, JPEGからPNGなど)

convert input.gif output.jpg

convertコマンドは拡張子から画像形式を自動判別して変換することができます。上記の例では GIF から JPEGへ変換しています。
拡張子がないファイル名を扱うときなど、拡張子に依存せずに変換したい場合はプレフィクスをつけることで任意の画像形式として取り扱うことも可能です。

<h1>JPEG 形式の input.dat ファイルを PNG形式のimage0001に変換する。</h1>
convert jpeg:input.dat png:image0001

画像の読み込み、保存に標準入力、標準出力を使う

cat input.jpg | convert - -resize 50x50 - &gt; output.jpg

cat input.jpg | convert jpg:- -resize 50x50 png:- &gt; output.png

標準入力、標準出力を扱いたい場合、ファイルの代わりにハイフンを指定します。
入力値でプレフィクスによる画像形式指定を省略した場合は自動判別されます。
同様に出力値で画像形式指定を省略した場合、入力値と同じ形式で出力されます。

SVGからPNG(JPEG,GIF)へ変換する。

convert input.svg -resize 1600x1600 output.png

SVGはPNGやJPEG,GIFなど他の画像と同様に入力画像として扱えます。
jpegやgifにする場合は、output.pngの拡張子を変えるだけでOKです。

色の変換

カラー写真をグレースケール画像、セピア画像に変換する

グレースケール(モノクロ写真)への変換。

convert input.jpg -type GrayScale output.jpg

セピア調画像への変換。

convert input.jpg -sepia-tone '80%' output.jpg

グレースケールの画像を単色のアルファ画像に変換する。

convert  from.png -background '#99FFFF' -channel A -combine to.png

黒い部分を透明、白部分を不透明として、-backgroundで指定した色(例では#99FFFF)で塗りつぶしたアルファ画像に変換します。

画像の色を反転する。

convert from.png -negate to.png to.png



画像操作

画像の向きを上下反転・左右反転する

<h1>上下反転</h1>
convert input.png -flip output.png
<h1>左右反転</h1>
convert input.png -flop output.png

画像の一部を切り抜く

-crop geometry

使用例:座標(10, 20)から30×40ピクセル切り抜く

convert input.png -crop '30x40+10+20' output.png

サイズ指定必須、座標は省略可能です。

画像をリサイズする

-resize geometry

使用例: アスペクト比を維持しつつ100×100に収まるのサイズにリサイズする。

convert input.png -resize '100x100' output.png

サイズ指定必須。サイズには -resize ‘50%’ のようにパーセント指定が可能です。
デフォルトでアスペクト比を維持したままリサイズしますが、-resize ‘100×100!’のようにサイズ指定にエクスクラメーション記号(‘!’)を指定した場合はアスペクト比を無視したリサイズを行います。

横幅だけに合わせてリサイズ、または縦幅だけに合わせてリサイズを行いたい場合、-resize ’50x’ や -resize ‘x50’のように不要なサイズ指定を省略することで一方だけを基準としたリサイズが実現できます。

画像を回転する

-rotate degree{&lt;}{&gt;}

例: 画像を90度回転する

convert input.png -rotate 90 output.png

回転角を度数で指定します。
90の倍数以外の場合、回転後の画像が収まるサイズにキャンバスが拡張され、余白部分は背景色で塗りつぶされます。
-rotate ’90<‘のように不等号を指定すると、元が縦長(‘<‘)、または横長(‘>’)の時だけ回転処理を行うことが可能です。

画像をトリミングする

-trim +repage

使用例:
convert input.png -trim +repage output.png

画像の上下左右の余白部分をトリミングします。
-trimだけでも画像はトリミングされますが、キャンバスサイズはトリミングされないため、+repageと組み合わせて使いましょう。

トリミングを行う対象は四隅の色と一致する色です。
近似色までトリミングしたい場合は -fuzz distance{%} オプションで近似色の許容範囲を事前に設定して下さい。

convert input.png -fuzz 10 -trim +repage output.png

Google App Engine でアプリケーション名を取得するには?

GAEのアプリケーションの名前はJava、Pythonどちらでもプログラム内から参照できるようになっています。 続きを読む Google App Engine でアプリケーション名を取得するには?

Linuxで “ls -l” のパーミッションに現れるドットの謎

Linux で ls -l の表示をした時に、パーミッション欄の右側にドット(“.”)が現れる事がある。

# ll -h /etc/profile.d/
-rw-r--r--. 1 root root 1.2K  4月 28 23:58 2010 colorls.csh
-rw-r--r--. 1 root root 1.2K  4月 28 23:58 2010 colorls.sh
-rw-r--r--  1 root root 1.8K 12月 11 08:19 2011 foo.sh

何度か調べるのだけど、すぐ忘れてしまうのでメモしておく。 続きを読む Linuxで “ls -l” のパーミッションに現れるドットの謎

RVMでRuby環境の切り替えを簡単に!

Rvm image
Ruby 開発を始める時はまずgem管理ツールを入れておくと便利です。
実行環境やプロダクトに応じ、Ruby本体やgemパッケージの依存するバージョンが異なる事も多々あります。これらのバージョンを管理して切り替えを容易にしてくれるのがRVM(Ruby Version Manager)やBundlerといった管理ツールなのです。

今回はRVMのインストール手順をまとめました。それでは続きをどうぞ。 続きを読む RVMでRuby環境の切り替えを簡単に!

RewriteEngine のURL書き換えを親ディレクトリ優先にする

他の.htaccessオプション同様、複数の .htaccess で mod_rewrite でURL書き換えを行うとサブディレクトリ優先になります。
メンテナンス状態にしたい時など、ドキュメントルートの.htaccessを差し替えるだけでサイト内の全てのコンテンツを不可視にしたい場合はこれでは困るので、調べてみたところ、RewriteOptions という設定がありました。
 
サブディレクトリでURL書き換えを行う .htaccess に以下のように
RewriteOptions inherit を追加すると、親ディレクトリ優先になりました。

RewriteEngine on
RewriteOptions inherit
RewriteRule .* https://www.ecoop.net/ [L]

 
RewriteOptions のマニュアルを日本語訳してみたので、ご参考下さい。

The RewriteOptions directive sets some special options for the current per-server or per-directory configuration. The Option string can currently only be one of the following:

inherit
This forces the current configuration to inherit the configuration of the parent. In per-virtual-server context, this means that the maps, conditions and rules of the main server are inherited. In per-directory context this means that conditions and rules of the parent directory’s .htaccess configuration are inherited.

Rules inherited from the parent scope are applied after rules specified in the child scope.

 (訳:
RewriteOptions ディレクティブは、記述箇所によって個別のサーバやディレクトリごとの設定を行うための特別なオプションです。オプション文字列は今のところ下記のひとつしかありません。
 
inherit
このオプションは現在の設定について強制的に親の設定を受け継ぐようにします。バーチャルサーバごとのコンテキストなら、これはメインサーバーのマッピングや条件、ルールを継承するという意味になります。ディレクトリごとのコンテキストなら親ディレクトリの条件やルールを継承します。
 
親のスコープから継承したルールは子のスコープで指定したルールの後に適用されます。
)

 
参考:
mod_rewrite
URLを書き換えろ!Apache Rewrite 機能の応用

Cygwinでも apt-get (apt-cyg) を使う

apt-cyg をインストールすることでパッケージインストールをCUIで行うことができるようになります。
 
apt-cyg プロジェクト
http://code.google.com/p/apt-cyg/
 
■インストール手順:

svn –force export http://apt-cyg.googlecode.com/svn/trunk/ /usr/local/bin/
chmod +x /usr/local/bin/apt-cyg

 

■使い方:

パッケージをインストールする。
apt-cyg install <package names>
 
パッケージを削除する。
apt-cyg remove <package names>
 
setup.ini を更新する。
apt-cyg update
 
インストールされているパッケージの一覧を表示する。
apt-cyg show
 
パターン(複数可)に一致するパッケージを探す。
apt-cyg find <pattern(s)>
 
パターン(複数可)に一致するパッケージの情報を表示する。
apt-cyg describe <pattern(s)>
 
指定したコマンドやファイルを含むパッケージを見つけ出す。
apt-cyg packageof <commands or files>

Ubuntu 10.10 で Git GUI を使う

Linuxで一番安定しているGitのGUI環境は git-guiだそうです。
起動するには端末から

git gui

で起動します。
日本語フォントが潰れている場合は wish8.5 をインストールし以下の手順でwish8.5に差し替えてください。

$ sudo rm /etc/alternatives/wish
$ sudo ln -s /usr/bin/wish8.5 /etc/alternatives/wish
$ sudo rm /etc/alternatives/wish.1
$ sudo ln -s /usr/share/man/man1/wish8.5.1.gz /etc/alternatives/wish.1

 
参考:
Ubuntu 10.04 LTS のgit-gui,gitkのフォントが汚い問題への対応方法

Ubuntu の起動音を無音にする

ネットブックやノートにUbuntuを入れたのに、音が気になって公共機関で立ち上げられない、という事がないように無音化の手順を書いておきます(Ubuntu 10.10で動作確認)。
 
1.システム->設定->サウンドを開く。
2.サウンドのテーマを「Ubuntu」から「なし」に変更。
3.設定を閉じる。
4. 無音system-ready.ogg (下記参照)をダウンロードする。
4./usr/share/sounds/ubuntu/stereo/system-ready.ogg を無声音ファイルに差し替え

sudo mv /usr/share/sounds/ubuntu/stereo/system-ready.ogg{,.original}
sudo cp system-ready.ogg /usr/share/sounds/ubuntu/stereo/system-ready.ogg

 
■ system-ready.oggについて
音量の控えめなものなら何でもいいですが、完全に静音にしたい場合は下のファイルに差し替えてください。
 
無音system-ready.oggファイルをダウンロード
 
参考:
Re: Startup Sound (Tack-ack-ack)(Ubuntu Forum)