UIImageクラス

2010. 10. 21
●概要

UIImageオブジェクトは、高レベルの画像データ表示方法です。

ファイル、Quartz画像オブジェクト、raw画像データからの画像を生成することができます。

またUIImageクラスは、現在のグラフィックス状況に対するいくつかの画像描画オプションが有り、異なる画像を合成したり、透明度を設定することができます。

画像オブジェクトは不変で、生成した後で属性を変更することはできません。

これは一般的に、初期化の際に画像の属性を指定する、または提供されたメタデータの属性値を信頼することを意味します。

いくつかの場合は、属性値をカスタマイズした画像のコピーを使う簡易メソッドをUIImageクラスは提供しています。

画像オブジェクトは不変なので、基となる画像データへ直接アクセスすることはできません。

ただし、PNGまたはJPEG形式の画像データを含むNSDataオブジェクトは、UIImagePNGRepresentationUIImageJPEGRepresentation関数で取得することができます。

システムは、サポートされたデバイスのカメラで撮影された、静止画の画像オブジェクトを利用できます。

写真の撮影には、UIImagePickerControllerクラスを使用します。

フォトアルバムへの写真の保存には、UIImageWriteToSavedPhotosAlbum関数を使用します。

画像とメモリ管理

メモリ不足の状況になると、システムのメモリ解放によってUIImageオブジェクトの画像データは削除されることがあります。

この削除動作は、UIImageオブジェクトが内部に蓄えている画像データのみに作用し、オブジェクト自体には作用しません。

削除された画像データの再描画を試みる際、画像オブジェクトはオリジナルのファイルからデータを自動的に再読み込みします。

しかしこの余分な読み込みステップは、小さなパフォーマンスの低下を招きます。

1024 x 1024以上のサイズのUIImageオブジェクトの生成は避けてください。

画像によるメモリ消費の大きいOpenGL ESで使うテクスチャ画像や、ビューやレイヤーへの画像の描画では、実行中に問題が発生する場合があります。

このサイズ制限は、コードベースでの操作や、または1024 x 1024ピクセル以上の画像をグラフィックスコンテキストでリサイズしての描画には適用されません。

実際には、これらの方法で画像をリサイズする(もしくはいくつかの小さな画像へ分割する)必要があります。

サポートする画像フォーマット

UIImageクラスが読み込みできるファイルフォーマットは下表の通りです。

フォーマット拡張子
Tagged Image File Format (TIFF).tiff , .tif
Joint Photographic Experts Group (JPEG).jpg , jpeg
Graphic Interchange Format (GIF).gif
Portable Network Graphic (PNG).png
Windows Bitmap Format (DIB).bmp , BMPf
Windows Icon Format.ico
Windows Cursor.cur
XWindow bitmapxbm

注:Windows Bitmap Format (BMP)ファイルで、RGB-565フォーマットの場合は読み込み時にARGB-1555に変換されます。



●タスク

●キャッシュされた画像の読み込みルーチン

+ imageNamed:

●新規画像の生成

+ imageWithContentsOfFile:
+ imageWithData:
+ imageWithCGImage:
+ imageWithCGImage:scale:orientation:
– stretchableImageWithLeftCapWidth:topCapHeight:

●画像の初期化

– initWithContentsOfFile:
– initWithData:
– initWithCGImage:
– initWithCGImage:scale:orientation:

●画像の属性

  imageOrientation    property
  size    property
  scale    property
  CGImage    property
  leftCapWidth    property
  topCapHeight    property

●画像の描画

– drawAtPoint:
– drawAtPoint:blendMode:alpha:
– drawInRect:
– drawInRect:blendMode:alpha:
– drawAsPatternInRect:



●プロパティ

Objective-Cのプロパティについての詳細は、『The Objective-C Programming Language』の『Properties』を参照してください。


CGImage

@property(nonatomic, readonly) CGImageRef CGImage

基盤となるQuartz画像データです。(読み込みのみ)

メモリの制約により画像データが解放された場合に、メモリにデータを読み込み直すためにこのメソッドを呼び出します。

画像データの再読み込みはパフォーマンスの低下を招く可能性があります。

UIImageオブジェクトがCGImageオブジェクトを使用して初期化されていた場合、プロパティの値はNULLになります。


imageOrientation

@property(nonatomic, readonly) UIImageOrientation imageOrientation

レシーバの画像の向きです。(読み込みのみ)

画像の向きは、画像データが描画されるときの表示方法に影響を与えます。

デフォルトでは画像は上向きに表示されます。

ただし画像が(EXIF情報などの)メタデータに関連付けられている場合は、このプロパティにメタデータで示されている向きが含まれます。
このプロパティの有効な値のリストは『UIImageOrientation』を参照してください。


size

@property(nonatomic, readonly) CGSize size

方向を含む画像の大きさです。(読み込みのみ)

iOS 4.0以降では、この値は画像の論理サイズを意味し、ポイント単位で表します。

iOS 3.x以前では、この値は常に画像のサイズをピクセル単位で表します。



●クラスメソッド

imageNamed:

+ (UIImage *)imageNamed:(NSString *)name

指定したファイル名に関連付けされた画像オブジェクトを返します。

指定したファイルの画像オブジェクト、またはメソッドが指定した画像が見つけられなかった場合はnilを返します。

このメソッドは、指定した名前の画像オブジェクトをシステムキャッシュの中から探し、存在するオブジェクトを返します。

一致する画像オブジェクトが既にキャッシュに存在しない場合、このメソッドは指定したファイルを画像データから読み込み、キャッシュして、結果のオブジェクトを返します。

name:拡張子を含むファイル名を指定します。
この画像を初めて読み込む場合、このメソッドはアプリケーションのメインバンドルから、指定した名前の画像を検索します。



●インスタンスメソッド

drawAtPoint:

- (void)drawAtPoint:(CGPoint)point

現在のコンテキスト内の指定した点に画像を描画します。

このメソッドは、画像の向きの設定を尊重し、現在のグラフィックスコンテキスト内に画像全体を描画します。

デフォルトの座標系では、画像は指定された点の右下に配置されます。

このメソッドは現在のグラフィックスコンテキストに適用されている任意の変換を尊重します。

このメソッドはkCGBlendModeNormalブレンドモードを使用して、完全に不透明で画像を描画します。

point:画像を描画する左上角の点を指定します。


stretchableImageWithLeftCapWidth:topCapHeight:

- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

指定したキャップ値で新しい画像オブジェクトを生成して返します。

画像を伸縮またはリサイズする際に、伸縮またはリサイズしない保護領域をキャップと呼びます。

そして、キャップで保護されない1ピクセル幅の領域を、各方向に伸縮またはリサイズします。

この手法はしばしば可変幅のボタンの生成に使用され、同じ丸みの角を保持しつつ必要に応じて中央の領域を拡大または縮小します。

このメソッドは、画像のキャップ値の追加、または現在の画像のキャップ値の変更に使用します。

どちらの場合においても、新しい画像を取得する元となる画像は変更されません。

leftCapWidth:左側のキャップ幅の値を指定します。
0を指定した場合、画像は水平方向の伸縮を行いません。
この値が画像にどう作用するのかは、leftCapWidthプロパティを参照してください。

topCapHeight:上側のキャップ幅の値を指定します。
0を指定した場合、画像は垂直方向の伸縮を行いません。
この値が画像にどう作用するのかは、topCapHeightプロパティを参照してください。



●定数

UIImageOrientation

画像の有効な向きを指定します。

typedef enum {
    UIImageOrientationUp,
    UIImageOrientationDown,    // 180度回転
    UIImageOrientationLeft,    // 90度反時計回り
    UIImageOrientationRight,    // 90度時計回り
    UIImageOrientationUpMirrored,    // 上向きのままの鏡像
    // 他軸の回転と反転
    UIImageOrientationDownMirrored,    // 水平方向の回転と反転
    UIImageOrientationLeftMirrored,    // 垂直方向の左回転と反転
    UIImageOrientationRightMirrored,    // 垂直方向の右回転と反転
} UIImageOrientation;

UIImageOrientationUp
画像のデフォルトの向き。
画像はここに示すように右上に描画されます。UIImageOrientationUp

UIImageOrientationDown
画像はここに示すように180度回転しています。UIImageOrientationDown

UIImageOrientationLeft
画像はここに示すように反時計回りに90度回転しています。UIImageOrientationLeft

UIImageOrientationRight
画像はここに示すように時計回りに90度回転しています。UIImageOrientationRight

UIImageOrientationUpMirrored
画像はUIImageOrientationUp値で描画された画像の鏡像となります。
言い換えると、画像はここに示すように水平方向に反転しています。UIImageOrientationUpMirrored

UIImageOrientationDownMirrored
画像はUIImageOrientationDown値で描画された画像の鏡像となります。
これは、ここに示すように上向きの画像を水平方向に反転し、180度回転させたものと同じです。UIImageOrientationDownMirrored

UIImageOrientationLeftMirrored
画像はUIImageOrientationLeft値で描画された画像の鏡像となります。
これは、ここに示すように上向きの画像を水平方向に反転し、反時計回りに90度回転させたものと同じです。UIImageOrientationLeftMirrored

UIImageOrientationRightMirrored
画像はUIImageOrientationRight値で描画された画像の鏡像となります。
これは、ここに示すように上向きの画像を水平方向に反転し、時計回りに90度回転させたものと同じです。UIImageOrientationRightMirrored



参考文献

UIImage Class Reference

IT用語辞典/Exifとは【Exchangeable Image File Format】






bose_soundlink_revolve
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
03 | 2017/04 | 05
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

bose_soundlink_revolve
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR