GTMUIImage+Resizeを使って画像の簡単リサイズ

写真などの画像を扱うiPhoneアプリを開発していると、画像のリサイズが必要になる事が良くあると思うのだが、Googleが提供しているMac OS X用開発ユーティリティ集「Google Toolbox for Mac」に、GTMUIImage+Resizeという画像のリサイズに便利なUIImageの拡張クラスがある。ということでその使い方を以下にメモしておく。


[設定]
1. svnコマンドを使ってGoogle Toolbox for Macソースコードをダウンロード
2. "iPhone"というフォルダ配下にあるGTMUIImage+Resize.mGTMUIImage+Resize.hという二つのファイルをXCodeのプロジェクトにコピーする


[使い方]
例えばhoge.jpgという画像をダウンロードして来て、指定のサイズにリサイズする場合には以下のようなコードになる(下記の例は300x200ピクセルへリサイズ)。

#import "GTMUIImage+Resize.h"

NSURL *url = [NSURL URLWithString:@"http://hoge.com/hoge.jpg"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
UIImage *resizedImage = [image gtm_imageByResizingToSize:CGSizeMake(300.0, 200.0) preserveAspectRatio:YES trimToFit:NO];

なお、引数preserveAspectRatioをYESにすると、アスペクト比を保ったまま画像がリサイズされる。
また、引数trimToFitをYESにすると、指定サイズ目一杯まで画像が拡大される(元画像の縦横比が指定サイズの縦横比と異なる場合には一部画像がカットされる)。


[リサイズ例]
元サイズが200x150ピクセルの画像を250x250ピクセルのUIImageViewにフィットするようにリサイズした場合の例を以下に示す。まずは、アスペクト比を保たずリサイズした場合(右がリサイズ後)。以下のように画像が縦に引き伸ばされる。

次にアスペクト比を保ってリサイズした場合(preserveAspectRatioをYESにする)。以下のように画像が歪まずリサイズされる。

最後にtrimToFitをYESにして画像を最大限に拡大した場合。以下のように左右が若干切れる形になる。