UIImageView の画像が正しい向きに保存できない場合の対処法

October 9, 2012 2:53 PM

このエントリーをはてなブックマークに追加  

AVCaptureStillImageOutput の jpegStillImageNSDataRepresentation で取得したデータで UIImageView の image プロパティを設定していたのですが、このデータを書き出したところ上下逆さまになってしまいました。

どうしてかなあと調べたところ、UIImageView の image には imageOrientation プロパティがあり、この情報に合わせて画像の回転処理をする必要がありました。

NSData *imageData = nil; if (_imageView.image.imageOrientation == UIImageOrientationDown) { UIGraphicsBeginImageContextWithOptions(_imageView.image.size, NO, 1); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context, _imageView.image.size.width, 0); CGContextScaleCTM(context, 1.0, -1.0); CGContextRotateCTM(context, -M_PI); CGContextDrawImage(context, CGRectMake(0, 0, _imageView.image.size.width, _imageView.image.size.height), _imageView.image.CGImage); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); imageData = UIImagePNGRepresentation(image); image = nil; } else { imageData = UIImagePNGRepresentation(_imageView.image); } [imageData writeToFile:imagePath atomically:YES]; imageData = nil;

entry tags