UIImage
UIImageクラスは、画像を管理するクラスです。
背景に画像を表示したり、ボタン内に画像を表示したりとプログラム中で画像を扱う場合には、画像ファイルをUIImageオブジェクトにしてから、UIImageViewやUIButton等のコントロールに渡す必要があります。
UIImageのクラス階層
NSObject
↑
UIImage
UIImageの生成
// 画像ファイル名を指定したUIImageの生成例
UIImage *image = [UIImage imageNamed:@"Sample.png"];
// URLを指定したUIImageの生成例
NSData *dt = [NSData dataWithContentsOfURL:
[NSURL URLWithString:@"http://xxx/aa.png"]];
UIImage *image = [[UIImage alloc] initWithData:dt];
UIImageのプロパティ
プロパティ名/型 | 読専 | 説明 |
---|---|---|
size (CGSize) |
○ |
画像のサイズを取得する (例)CGSize cs = image.size; 画像の横幅を取得する (例)float width = image.size.width; 画像の高さを取得する (例)float height = image.size.height; |
主要なプロパティのみ掲載しています。
上記「UIImageのクラス階層」にあるクラスのプロパティも使用できます。
UIImageのリサイズ(拡大・縮小)・切り取り
UIImageViewでは拡大・縮小・切り取りは簡単に行えますが、UIImageでそれを行う場合はちょっと手間がかかります。しかし、以下のような感じで実現する事ができます。
// リサイズ例文(サイズを指定する方法)
UIImage *img_mae = [UIImage imageNamed:@"hoge.png"]; // リサイズ前UIImage
UIImage *img_ato; // リサイズ後UIImage
CGFloat width = 100; // リサイズ後幅のサイズ
CGFloat height = 200; // リサイズ後高さのサイズ
UIGraphicsBeginImageContext(CGSizeMake(width, height));
[img_mae drawInRect:CGRectMake(0, 0, width, height)];
img_ato = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// リサイズ例文(割合を指定する方法)
UIImage *img_mae = [UIImage imageNamed:@"hoge.png"]; // リサイズ前UIImage
UIImage *img_ato; // リサイズ後UIImage
float widthPer = 1.5; // リサイズ後幅の倍率
float heightPer = 1.5; // リサイズ後高さの倍率
CGSize sz = CGSizeMake(img_mae.size.width*widthPer,
img_mae.size.height*heightPer);
UIGraphicsBeginImageContext(sz);
[img_mae drawInRect:CGRectMake(0, 0, sz.width, sz.height)];
img_ato = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// 切り取り例文
UIImage *img_mae = [UIImage imageNamed:@"hoge.png"]; // 切り取り前UIImage
UIImage *img_ato; // 切り取り後UIImage
CGRect rect = CGRectMake(30, 30, 200, 100); // 切り取る場所とサイズを指定
UIGraphicsBeginImageContext(rect.size);
[img_mae drawAtPoint:rect.origin];
img_ato = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageをアルバムに保存する
iPhoneのフォトアルバムにUIImageで作成した画像を保存する方法です。
←ここに保存します。
UIImageオブジェクト(以下の例だとgazo)を作成した後、以下のように呼び出せばOKです。
// フォトアルバムに保存する
UIImageWriteToSavedPhotosAlbum(
gazo, self,
@selector(savingImageIsFinished:didFinishSavingWithError:contextInfo:), nil);
保存が完了したら以下のメソッドが呼ばれます。(保存には少し時間がかかります)
// 保存が完了したら呼ばれるメソッド
-(void)savingImageIsFinished:(UIImage*)image
didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo{
// Alertを表示する
UIAlertView *alert
= [[[UIAlertView alloc] initWithTitle:nil
message:@"保存しました" delegate:nil
cancelButtonTitle:nil otherButtonTitles:@"OK", nil] autorelease];
[alert show];
}