次のような変数があるとする。
UIImage *image;
まず、CGImageRef型を得る。
CGImageRef imageRef = [image CGImage];
画像の情報を得る
size_t width = CGImageGetWidth(imageRef);
size_t height = CGImageGetHeight(imageRef);
size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef);
size_t bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
size_t bytesPerRow = CGImageGetBytesPerRow(imageRef);
画像のサイズを変更する;拡大縮小
UIImage *resized;
size_t newWith = ...;
size_t newHeight = ...;
UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
[input drawInRect:CGRectMake(0, 0, newWidth, newHeight)];
resized = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
ピクセル単位にアクセスする。
CGImageRef inputImageRef = [resized CGImage];
CFDataRef inputDataRef = CGDataProviderCopyData(CGImageGetDataProvider(inputImageRef));
unsigned char *pixelData = (unsigned char*) CFDataGetBytePtr(inputDataRef);
int length = CFDataGetLength(inputDataRef);
ピクセルデータから画像構築。
CGDataProviderRef dataProviderRef;
dataProviderRef = CGDataProviderCreateWithData(NULL, pixelData, width2*height2*4, NULL);
CGImageRef newImageRef = CGImageCreate(width2, height2, bitsPerComponent, bitsPerPixel, bytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaLast, dataProviderRef, NULL, 0, kCGRenderingIntentDefault);
ImageRefからUIImageを得る。
UIImage *newImage = [[UIImage alloc] initWithCGImage:newImageRef];