2012/07/09更新

[XCODE] 画像のリサイズを行う方法

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今日は、iOS上での画像のリサイズを行う方法を学んだので、ブログに書きたいと思います。

f:id:yoheiM:20111003182541j:image





画像のリサイズを行う

UIImageは、インスタンス作成時には画像の縮尺を指定することで、大きさを指定することはできます。 しかしアプリによっては取り扱う画像の大きさがまちまちで、画像ファイルを読み込んでみないと大きさが分からない場合も あります。

そんな場合に、画像を開いた後にでも、画像サイズを変更できる方法です。

画像の拡大縮小を行うには、以下のような処理を実行する事で、リサイズを行うことが出来ます。画像はUIImageのオブジェクトを前提とします。


- (void) doSomething : (id) sender {

  UIImage *aImage = imageView.image;  // imageViewはUIImageView型のフィールド変数。

  // 画像を縮尺1/2にする  ←今回説明したい部分
  UIImage *resizedImage = [self resizeImage:aImage scale:0.5f];
  
  // 縮小した画像をUIImageViewの画像として登録する
  imageView.image = resizedImage;
}

// 画像をリサイズするメソッド。
// @param img リサイズ対象の画像
// @param scale リサイズ縮尺
// @return リサイズ後の画像
- (UIImage*)resizeImage:(UIImage *)img scale:(float)scale {

  // 指定されたスケールから、画像のリサイズ後のサイズを計算する
  CGSize resizedSize = CGSizeMake(img.size.width * scale, img.size.height * scale);

  // UIGraphics××の関数を利用して、画像をリサイズする   ←ここが重要な部分!!!
  UIGraphicsBeginImageContext(resizedSize);
  [img drawInRect:CGRectMake(0, 0, resizedSize.width, resizedSize.height)];
  UIImage* resizedImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  // リサイズ後の画像を呼び出し元に返す
  return resizedImage;
}

上記のように実装する事で、画像の拡大縮小を簡単に行う事が可能です。「resizeImage:scale:」メソッドは、他のプロジェクトにそのまま移植する事も可能かもしれません。





最後に

リサイズや回転など、画像をいじる処理は、たびたび必要になるもんですね。画像をだんだんと自由に扱えるようになってくると、楽しいかも。次は回転をやってみよっと(*゚▽゚)ノ







こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。