iPhoneアプリ開発の虎の巻
HOME > UIImage

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のプロパティ

【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];

}
totop