画像を画面サイズ毎に書き出す

2011/02/13

iPhoneの画面サイズ(329 x 480)で、jpg画像を画面数分書き出してみる。 予め、CGContextRefには描画されていて、ページ数も取得されているものとします。

- (void)exportJPEG:(NSUInteger)pageCount {
    context = UIGraphicsGetCurrentContext();
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES);
    NSString *basePath = [paths objectAtIndex:0];
    NSString *fileName;
    NSString *filePath;
    for (int i=0; i < pageCount; i++) {
        fileName = [NSString stringWithFormat:@"page-%d.jpg", i + 1];
        filePath = [basePath stringByAppendingPathComponent:fileName];
        
        context = UIGraphicsGetCurrentContext();
        CGImageRef imageRef = CGBitmapContextCreateImage(context);
        UIImage *image = [UIImage imageWithCGImage:imageRef];
        
        CGRect rect = CGRectMake(i * 320, 0, 320.0, 480.0);
        CGImageRef pageImageRef = CGImageCreateWithImageInRect(image.CGImage, rect);
        UIImage *pageImage = [UIImage imageWithCGImage:pageImageRef];
        CGImageRelease(pageImageRef);
        
        NSData *data = UIImageJPEGRepresentation(pageImage, 0.8);
        [data writeToFile:filePath atomically:YES];
    }
}

横(landscape)の状態もとれば、横向きでも書き出せますね。