UIImageViewの拡大・縮小はプロパティ値を変更するなどで、比較的簡単に実現できますが、UIImageをリサイズしようとするとなかなか面倒な処理を行わなければなりません。
リサイズ(サイズ指定バージョン)
[[UIImage]] *img_bf = [UIImage imageNamed:@"hoge.png"];
UIImage *img_af;
CGFloat width = 200;
CGFloat height = 200;
UIGraphicsBeginImageContext(CGSizeMake(width, height));
[img_bf drawInRect:CGRectMake(0, 0, width, height)];
img_af = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
よくわかる?解説
細かく見ていくと結構簡単な処理です。
UIImage *img_bf; ← リサイズ前のUIImageを取得
UIImage *img_af; ← リサイズ後のUIImageを準備しておく
CGFloat width = 200 ← リサイズ後の幅を指定
CGFloat height = 200; ← リサイズ後の高さを指定
UIGraphicsBeginImageContext(CGSizeMake(width, height)) ← リサイズする大きさのコンテキストを作成
[img_bf drawInRect:CGRectMake(0, 0, width, height)]; ← その領域に描画してみる
img_af = UIGraphicsGetImageFromCurrentImageContext(); ← 描画されたUIImageを取得
UIGraphicsEndImageContext() ← 作った画面外描画領域を破棄(後片付けみたいなもんです)
リサイズ(割合指定バージョン)
UIImage *img_bf = [UIImage imageNamed:@"hoge.png"];
UIImage *img_af;
float widthPer = 2.5;
float heightPer = 2.5;
CGSize resize = CGSizeMake(img_bf.size.width * widthPer, img_bf.size.height * heightPer);
UIGraphicsBeginImageContext(resize);
[img_bf drawInRect:CGRectMake(0, 0, resize.width, resize.height)];
img_af = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
よくわかる?解説
サイズ指定バージョンとの違いは、リサイズ前のUIImageデータの大きさを見て、それに対して任意の倍率をかけ算していること
CGSize resize = CGSizeMake(img_bf.size.width * widthPer, img_bf.size.height * heightPer); ← これです
最終更新:2013年02月27日 16:02