ImageMagick を使ってサムネイル画像を作成する方法

公開日: : 最終更新日:2014/01/26 ImageMagick ,

またまた ImageMagick ネタです。今回はサムネイル画像を作成する方法を調べてみました。

ImageMagick ネタが続いてますんでちょっとリンク貼っておきます。

icatch-man-thumbs-up

サムネイル画像を作成するコマンド

ImageMagick の convert コマンドに “-thumbnail” オプションを付けて実行するとサムネイル画像を作成することができます。次のリンクと引用は、本家サイトにある “-thumbnail” オプションについてのものです。

-thumbnail geometry

    Create a thumbnail of the image.

This is similar to -resize, except it is optimized for speed and any image profile, other than a color profile, is removed to reduce the thumbnail size. To strip the color profiles as well, add -strip just before of after this option.

やりたかったのは単純に縦横の大きさを縮小した画像を作成するというものだったので、実行するコマンドは例は次のようになります。

$ convert -thumbnail 200x150 in_file out_file
  • -thumbnail 200×150 → 作成するサムネイル画像の大きさ(縦x横)を指定する
    • 上記の例だと、横200px・縦150pxの大きさになる
  • in_file → サムネイル画像の元画像ファイル
  • out_file → 作成されるサムネイル画像ファイル

サムネイル画像を作成すると Exif も削除される

上記の引用にもありますが、”-thumbnail” オプションを実行すると “-strip” オプションも実行されます。”-strip” オプションは Exif を削除するためのオプションなので、作成されるサムネイル画像は Exif が削除されたものになります。リサイズしてから Exif を削除するなんてことをしなくてもいいので非常に気が利いてます。

Java から ImageMagick を使ってサムネイル画像を作成する

さて、今回も Java から ImageMagick を使ってサムネイル画像を作成するように実装してみました。

ソースコードはこんな感じです。

/**
 * サムネイル画像を作成する。
 * 
 * @param commandPath
 *            convert コマンドの絶対パス。
 * @param src
 *            生成元のファイル。Exif を削除したい画像ファイル
 * @param dest
 *            生成先のファイル。このファイルにサムネイル画像を作成する
 * @param size
 *            サムネイルサイズ。[0-9]{1,}x[0-9]{1,} で指定する
 * @throws IOException
 *             commandPath に指定されているパスが convert コマンドではなかった場合
 * @throws InterruptedException
 *             ImageMagick の操作に失敗した場合
 */
public static void createThumbnail(String commandPath, File src, File dest,
        String size) throws IOException, InterruptedException {

    if (log.isDebugEnabled()) {
        log.debug(String.format(
                "commandPath:%s, srcPath:%s, destPath:%s, size:%s",
                commandPath, src, dest, size));
    }

    ProcessBuilder builder = new ProcessBuilder(commandPath, "-thumbnail",
            size, src.getAbsolutePath(), dest.getAbsolutePath());
    Process process = builder.start();
    process.waitFor();
}

第一引数の commandPath は ImageMagick の convert コマンドのパスを指定します。パスはプロパティファイルなどに切り出しておきました。

ライブラリ作りました

で、またまた宣伝させてもらいますが、Java から ImageMagick を扱うラッパーライブラリを作成して Github に登録しました。

このライブラリでもサムネイル画像を作成する処理を実装してあります。

  • ImageMagick#createThumbnail

使っていただいたところでボク自身には一銭も入りませんが、気が向いたら使っていただけると嬉しいです。
よろしくお願いいたします。

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

icatch-lock-6311261312401

ImageMagick を使って Exif を取り除く方法

プライベートで撮影した写真をブログとかどこかの Web サービスにアップロードしたり、人に渡すときは

記事を読む

icatch-puzzle-212154_640

ImageMagick を使って画像を結合する方法

前回に引き続き ImageMagick ネタです。今回は画像を結合する方法を調べてみました。

記事を読む

no image

ImageMagick を使って画像の縦横サイズを縮小する

ガラケーを使った案件で、100KB制限のために画像ファイルを縮小する必要があった。ImageMagi

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


三 − = 2

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑