Home > iPhone > iPhone 画像のリサイズとトリミングなど

iPhone 画像のリサイズとトリミングなど

  • Posted by: goron
  • 2010年2月12日 22:26
  • iPhone

今日の実装
・画像のトリミング
・xml読み込み -> xmlパース
・mp3のストリーミング再生(Core Audio本のクラス使用)
Audio File Stream Servicesを使いこなすようになるには今のスキルでは無理そう・・・

今日は画像トリミングについて
まずimagePickerControllerで取得した画像をリサイズしてから使う方が何かと便利かも。

-(void)imagePickerController:(UIImagePickerController*)picker
didFinishPickingMediaWithInfo:(NSDictionary*)info

ピッカーで画像選択後、infoにNSDictionary型で画像データが格納されているので、

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

UIImageを取得する。

まず、リサイズ。縦横比率を保ちながら縮小。
//例えばどちらかの辺(縦か横か)を320pxにする。
CGImageRef imageRef = [image CGImage];
size_t w = CGImageGetWidth(imageRef);
size_t h = CGImageGetHeight(imageRef);

if (w < h) {
     //縦辺が長い場合
resize_w = 320;
resize_h = h * resize_w / w; //横幅と同じ比率
isWidthLong = NO;
} else {
      //横辺が長い場合
resize_h = 320;
resize_w = w * resize_h / h;
isWidthLong = YES;
}

上記で得た画像サイズをUIGraphicsBeginImageContext()にセットして書き込む。

UIGraphicsBeginImageContext(CGSizeMake(resize_w, resize_h));
[image drawInRect:CGRectMake(0, 0, resize_w, resize_h)];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これでimageには、片辺が320pxに縮小された画像が入ります。


次にこの画像の一部を切り抜きたいとします。
僕の場合は320*320の正方形です。
タッチイベントで画像をドラッグさせて、切り抜く場所を選択させました。
isWidthLongはそのドラッグ方向を固定するためのBOOL値です。上下か左右かですね。

ここで1つつまずきました。size_t型。上記ではresize_w = 320;と整数を入れてます。
ドラッグの移動範囲制限する際に、上記のsize_t型のresize_w、resize_hをfloatで比較に使用したときです。はじめ、(320-resize_h)とそのまま計算させていたのですが、当然駄目でした。
一度floatでキャストしないといけないですね。
float rh = (float)resize_h;


そしてリサイズです。w,hには画像の切り抜き開始位置(左上頂点)を入れます。
CGRect rect = CGRectMake(w, h, 320.0, 320.0);
CGImageRef cgImage = CGImageCreateWithImageInRect(image.CGImage, rect);
UIImage *img = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
作られた画像はUIImageのimageWithCGImage:でインスタンス化すればできます。
最後にCGImageRelease(cgImage);で切り抜いたCGImageを開放する。

これで、320*320の切り抜き画像ができあがり。


Clip to Evernote

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://www.hirano-dept.com/mt/mt-tb.cgi/81
Listed below are links to weblogs that reference
iPhone 画像のリサイズとトリミングなど from 袖触れ合うも多少の縁

Home > iPhone > iPhone 画像のリサイズとトリミングなど

Profile

iPhone/iPad開発 web制作:平野百貨店
iPhone/iPad開発・web制作・映像制作をしている平野百貨店の店長個人の覚書です。
ご意見・ご感想などお問合せはコチラからどうぞ。

※最近ツッコミをもらうので一応書いておきます。ブログのタイトル「袖触れ合うも多少の縁」はわざとです。正確には「袖振り合うも多生の縁」が正解です。

Search
iPhone Apps






RSS
リンク
のこぎりそうの日記

Return to page top