[XCODE] 画像のリサイズを行う方法
こんにちは、@yoheiMuneです。
今日は、iOS上での画像のリサイズを行う方法を学んだので、ブログに書きたいと思います。
画像のリサイズを行う
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:」メソッドは、他のプロジェクトにそのまま移植する事も可能かもしれません。
最後に
リサイズや回転など、画像をいじる処理は、たびたび必要になるもんですね。画像をだんだんと自由に扱えるようになってくると、楽しいかも。次は回転をやってみよっと(*゚▽゚)ノ