Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Google App Engine for Javaを使ってみよう!
(2)Images Java API の使い方

Google App Engine for Javaを使ってみよう! (2)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/04/21 14:00

 2008年4月7日に発表されたGoogle App Engineが、ちょうど1年後の2009年4月7日にJavaに対応したことが発表されました。今回はそんなGoogle App Engine for Javaの面白い「Images Java API」の使い方を勉強したいと思います。

目次

はじめに

 Googleのインフラで実行されるクラウドサービス「Google App Engine」が2009年4月7日にJavaに対応しました。Javaエンジニアにも利用できるようになった、Google App Engineを一緒に勉強して行きましょう!

 今回は簡単に画像処理ができる、Images Java APIを紹介したいと思います。

対象読者

  • ウェブサービス開発に興味のあるJavaエンジニア
  • Google App Engine for Javaに興味がある方

必要な環境

  • 「Google Plugin for Eclipse」がインストールされている、Eclipse 3.3(Europa)か3.4(Ganymede)

 開発環境の構築手順については、第1回の解説を参照してください。

プロジェクトの作成

 前回と同じように、ボタンメニューから[g]ボタンをクリックして新規プロジェクトを作成します。

 今回はGWTを利用しないので、[Use Google Web Toolkit]のチェックは外してください。Project nameは「ImageTest」、Packageは「com.daisukeyamashita.test.images」にしました。

Images Java APIとは?

 Google App Engineでは画像データを加工するAPIが提供されています。具体的には以下のような機能を備えています。

  • リサイズ
  • 回転
  • 切り出し
  • 色調変更

 対応している入力画像フォーマットは以下の通りで、出力画像フォーマットは「JPEG」「PNG」のみです。

  • JPEG
  • PNG
  • GIF(アニメーションGIFを含む)
  • BMP
  • TIFF
  • ICO

 なお入出力サイズは、ともに1MBに制限されているのでご注意下さい。

Images Java APIを使ってみよう!

 Google App Engineの「Images Java API」は、規模が小さく簡単に使える画像処理APIです。

 画像の加工は、加工処理を実行するサービス(ImageService)に、加工対象データ(Image)と加工処理(Transform)を与え実行するだけ、とシンプルです。1回の処理で1加工しかできませんので、「切り取ってから回転したい」という時は、「切り取り」と「回転」を続けて実行します。

 まずは、画像データを50x50のサイズに変更する実際のソースコードを見てみましょう。

ImagesService imagesService = ImagesServiceFactory.getImagesService(); // (1)
Image oldImage = ImagesServiceFactory.makeImage(oldImageData); //(2)
Transform resize = ImagesServiceFactory.makeResize(50, 50); //(3)
Image newImage = imagesService.applyTransform(resize, oldImage); //(4)
  1. ImageServiceインスタンスを取得します。
  2. 入力ストリームからImageインスタンスを生成します。
  3. 加工処理が定義されているTransformインスタンスを生成します。
  4. ImageServiceインスタンスで、Imageインスタンス(加工対象データ)にTransformインスタンス(加工処理)を実行します。

 これだけのコードで、画像データを50x50のサイズに画像を加工することができます。

画像サイズについて

 makeResizeは元画像のアスペクト比率をそのままに、引数に指定した矩形サイズに収まるように画像を加工します。つまり、200x200の画像をmakeResize(200, 50)で加工すると、50x50の画像が生成されます。現在のImages Java APIでは、アスペクト比を変更する手段が用意されていませんので、アスペクト比を変更するには、別のライブラリを利用して下さい。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 山下 大介(ヤマシタ ダイスケ)

      京都大学を中心とした、産官学共同プロジェクトのSOBAプロジェクトに参加後、同プロジェクトで開発したP2P配信によるVoIP技術を2005年に商業化。オープンソース、VoIP、P2P、クラウドコンピューティングに精通。趣味はGoogleの追っかけ。現在は、株式会社SOBAプロ...

バックナンバー

連載:Google App Engine for Javaを使ってみよう!

もっと読む

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5