翻訳公式ImageIO(二)
5786 ワード
Image Sourceの作成と使用
イメージソースから画像を生成
最も一般的な機能の1つは、
イメージソースからサムネイルを作成
多くの
サムネイルでしか作成できないsizeはすべて幅=高さ
画像を逐次ロード
非常に大きな画像がある場合は、ネット上に画像をロードします.累計データのは、画像データ を積算するためには、呼び出し方法 によって逐次ピクチャデータを に追加は、方法 に積算されているすべてのデータを含む必要がある.十分なデータが蓄積されている場合は、 が繰り返し実行されていない場合リリース
画像のプロパティを表示
デジタルピクチャには、ピクチャサイズ、ピクチャ解像度、ピクチャ方向、ピクチャ色プロファイル、絞り、計算モード、焦点距離、作成時間、キーワード、タイトル、その他の情報など、豊富な情報が含まれています.これらの情報は画像の処理と編集に非常に有用であり,これらのデータが露出している場合にのみユーザのインタフェースである.方法
Image Source
クラスは、データアクセスのタスクを抽象化し、元のデータを管理する必要がある必要性を排除します.1つのImage Source
のオブジェクトは、1つ以上のピクチャ、サムネイル、各画像の属性および画像のファイルを含むことができる.画像データを使用すると、appはOS Xv 10で実行されます.4システムの後、Image Source
は画像のデータをあなたのアプリケーションに移動するのに良い方法です.CGImageSource
を作成して現金化すると、CGImageSource
の方法を使用して、画像、サムネイル、本の香りのプロパティ、画像の他の情報を取得することができます.イメージソースから画像を生成
最も一般的な機能の1つは、
Image I/O Framework
を使用してImage Source
からピクチャを作成し、似たようなコードリスト2-1この例は、パス名に基づいてImage Source
を作成し、ピクチャを抽出する方法を示しています.Image Source
オブジェクトの作成に成功すると、画像のフォーマットがわかります.Image Source
から画像を生成するとき.下書きを作成する必要があります.また、サムネイルを作成するかどうか、キャッシュを許可するかどうかなど、属相辞書を提供することもできます.CGImageSouce Reference
とCGImageProperties Refrence
を見てください.Image Source
には複数の画像が含まれているので、下付き記号を作成する必要があります.Image Source file
の中に1つのピクチャしか含まれていない場合、0
を伝えることができます.Image Source
の中に何枚かのピクチャが含まれていることを見つけることができます.この方法を呼び出すことによって、CGImageSourceGetCount
リスト2-1を呼び出すことができます.- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"huoche" ofType:@"png"];
UIImage *image = [self getImageWithPath:path];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
imageView.frame = CGRectMake(20, 20, 50, 50);
[self.view addSubview:imageView];
}
- (UIImage *)getImageWithPath:(NSString *)imagePath {
// url
NSURL *fileURL = [NSURL fileURLWithPath:imagePath];
// ImageIO C Core Foundation, NSURL
CFURLRef fileCFURL = (__bridge CFURLRef)fileURL;
NSDictionary *dic = @{(__bridge_transfer NSString *)kCGImageSourceShouldAllowFloat: @YES,
(__bridge_transfer NSString *)kCGImageSourceShouldCache: @YES};
CFDictionaryRef options =(__bridge_retained CFDictionaryRef)dic;
//CFURLRef url,
//CFDictionaryRef options。 source 。 、 。
// CGImageProperties Reference
CGImageSourceRef source = CGImageSourceCreateWithURL(fileCFURL, options);
CFRelease(options);
CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, 0, nil);
CFRelease(source);
if (!imageRef) {
NSLog(@"Error");
return nil;
}
UIImage *image = [UIImage imageWithCGImage:imageRef];
return image;
}
イメージソースからサムネイルを作成
多くの
Image Source file
には、インデックスできるサムネイルが含まれています.サムネイルが存在しない場合は、Image Source
を作成するときにオプションを指定してサムネイルを生成できます.また、サムネイルを生成する最大sizeを指定するか、サムネイルが反転するかどうかを指定することもできます.インベントリ2−2は、data
からImage Source
を作成し、サムネイルに関する制約オプションを設定する方法を示す.を使用してインポートしたストロークVSラム速度のデータ点を示します.このキーワードkCGImageSourceCreateThumbnailWithTransform
を使用して、サムネイルが回転または縮小されるべきときに画像リスト2-2に適応するように指定することができます.-(UIImage *)getThumbnailImageWithData:(NSData *)imageData {
NSDictionary *dic = @{(__bridge_transfer NSString *)kCGImageSourceShouldAllowFloat: @YES,
(__bridge_transfer NSString *)kCGImageSourceShouldCache: @YES,
(__bridge_transfer NSString *)kCGImageSourceCreateThumbnailFromImageIfAbsent: @YES,
(__bridge_transfer NSString *)kCGImageSourceThumbnailMaxPixelSize: [NSNumber numberWithInteger:20]};
CFDictionaryRef options =(__bridge_retained CFDictionaryRef)dic;
//CFURLRef url,
//CFDictionaryRef options。 source 。 、 。
// CGImageProperties Reference
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);
CFRelease(options);
CGImageRef imageRef = CGImageSourceCreateThumbnailAtIndex(source, 0, options);
CFRelease(source);
if (!imageRef) {
NSLog(@"Error");
return nil;
}
UIImage *image = [UIImage imageWithCGImage:imageRef];
return image;
}
サムネイルでしか作成できないsizeはすべて幅=高さ
画像を逐次ロード
非常に大きな画像がある場合は、ネット上に画像をロードします.累計データの
Image Source
クラスを作成することができ、計算に基づいて画像を表示することができます.CFData
から画像データを徐々にロードするには、次のタスクを実行する必要があります.CFData
を作成する.Image Source
CGImageSourceCreateIncremental
を作成する.CFData
CGImageSourceUpdateData
を呼び出し、CFData
パラメータがピクチャ全体または一部のピクチャを含むかどうかを指定するために使用されるCFData
オブジェクトおよびブール値を送信する.いずれの場合も、データパラメータは、現在ピクチャデータimage
を作成して、この方法でCGImageSourceCreateImageAtIndex
を作成して、画像の一部をレンダリングすることができます.その後彼を釈放したCGImageSourceGetStatusAtIndex
メソッドを呼び出すことで、完全部のデータを受信するときにチェックできます.メソッドがKCGImageSourceComplete
を返すと、データはすべてロード済みであることが示される.3と4のImage Source
オブジェクト- (UIImage *)getIncrementalImageWithData:(NSData *)imageData finish:(NSNumber*)isFinish {
CFDataRef dataRef = (__bridge CFDataRef)imageData;
CGImageSourceUpdateData(self.mySource, dataRef, (__bridge CFBooleanRef)isFinish);
CGImageRef imageRef = CGImageSourceCreateImageAtIndex(self.mySource, 0, NULL);
UIImage *image = [UIImage imageWithCGImage:imageRef];
return image;
}
画像のプロパティを表示
デジタルピクチャには、ピクチャサイズ、ピクチャ解像度、ピクチャ方向、ピクチャ色プロファイル、絞り、計算モード、焦点距離、作成時間、キーワード、タイトル、その他の情報など、豊富な情報が含まれています.これらの情報は画像の処理と編集に非常に有用であり,これらのデータが露出している場合にのみユーザのインタフェースである.方法
CGImageSourceCopyPropertiesAtIndex
は、ImageSource
の1つのピクチャの属性情報を検索し、辞書的に返すことができるが.しかし、この辞書を巡り、画像の属性の情報を調べ、表示するコードを作成する必要があります.