NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"test.dat"];
int loop = 1000;
UIImage *image;
image = [UIImage imageNamed:@"42616"];
NSLog(@"start.");
NSDate *d;
NSTimeInterval t;
NSData *data;
UIImage *imagei;
// 従来使用していた UIImage を PNG の画像にして保存する方法
d = [NSDate date];
for (int i = 0; i < loop; ++ i) {
@autoreleasepool {
data = UIImagePNGRepresentation(image);
[data writeToFile:path atomically:YES];
data = [NSData dataWithContentsOfFile:path];
imagei = [UIImage imageWithData:data];
NSAssert(imagei, @"failed.");
}
}
t = [[NSDate date] timeIntervalSinceDate:d];
NSLog(@"Test1 %f sec",t);
NSLog(@"data length: %d",data.length);
NSLog(@"image size: %@",NSStringFromCGSize(imagei.size));
// -[UIImage imageNamed:] で読み込んだ UIImage を NSCoding で NSData にする方法
d = [NSDate date];
for (int i = 0; i < loop; ++ i) {
@autoreleasepool {
data = [NSKeyedArchiver archivedDataWithRootObject:image];
[data writeToFile:path atomically:YES];
data = [NSData dataWithContentsOfFile:path];
imagei = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSAssert(imagei, @"failed.");
}
}
t = [[NSDate date] timeIntervalSinceDate:d];
NSLog(@"Test2 %f sec",t);
NSLog(@"data length: %d",data.length);
NSLog(@"image size: %@",NSStringFromCGSize(imagei.size));
// ビットマップから読み込んだ UIImage を NSCoding で NSData にする方法
UIImage *subimage = [UIImage imageNamed:@"42616"];
UIGraphicsBeginImageContext(subimage.size);
[subimage drawAtPoint:CGPointZero];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
d = [NSDate date];
for (int i = 0; i < loop; ++ i) {
@autoreleasepool {
data = [NSKeyedArchiver archivedDataWithRootObject:image];
[data writeToFile:path atomically:YES];
data = [NSData dataWithContentsOfFile:path];
imagei = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSAssert(imagei, @"failed.");
}
}
t = [[NSDate date] timeIntervalSinceDate:d];
NSLog(@"Test3 %f sec",t);
NSLog(@"data length: %d",data.length);
NSLog(@"image size: %@",NSStringFromCGSize(imagei.size));
NSLog(@"fin.");