YoheiM技術やらずに終われまテン

2011-10-03 [XCODE]画像のリサイズを行うには

こんにちは、@yoheiMuneです。

今日は、画像のリサイズ方法を学んだので、ブログに残したいと思います。今日はライトなネタ♪(´ε` )

f:id:yoheiM:20111003182541j:image





画像のリサイズを行う

画像の拡大縮小を行うには、以下のような処理を実行する事で、リサイズを行うことが出来ます。画像は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:」メソッドは、他のプロジェクトにそのまま移植する事も可能かもしれません。






最後に

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

以下は、関連ページです。参考になれば幸いです。