У меня странная проблема с captureStillImageAsynchronouslyFromConnection.Если я сохраню изображение с помощью jpegStillImageNSDataRepresentation во время зеркального отображения видео, изображение в рулоне камеры поворачивается на 90 градусов по часовой стрелке.Однако, если это не отражается, ориентация в порядке.Я выложу код, у кого-нибудь еще есть эта проблема / знаете исправление?
Обновление: только что провел несколько тестов, высота и ширина (640x480) в порядке и отражают ориентацию устройства.Когда я делаю снимок в портретной ориентации, он сообщает об UIImageOrientationLeft, а при зеркальном отображении - UIImageOrientationLeftMirrored.
Обновление 2: при просмотре сохраненной фотографии в рулоне камеры предварительный просмотр изображения имеет правильную ориентацию, какизображение, когда вы проводите между фотографиями, но когда фотография полностью загружена, она поворачивается на 90 градусов.Может ли это быть проблема рулона камеры?(Я на 4.3.3)
- (void) captureImageAndSaveToCameraRoll
{
AVCaptureConnection *stillImageConnection = [AVCamUtilities connectionWithMediaType:AVMediaTypeVideo fromConnections:[[self stillImageOutput] connections]];
if ([stillImageConnection isVideoOrientationSupported])
[stillImageConnection setVideoOrientation:[self orientation]];
[[self stillImageOutput] captureStillImageAsynchronouslyFromConnection:stillImageConnection
completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
ALAssetsLibraryWriteImageCompletionBlock completionBlock = ^(NSURL *assetURL, NSError *error) {
if (error) {
if ([[self delegate] respondsToSelector:@selector(captureManager:didFailWithError:)]) {
[[self delegate] captureManager:self didFailWithError:error];
}
}
};
if (imageDataSampleBuffer != NULL) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
UIImage *image = [[UIImage alloc] initWithData:imageData];
[library writeImageToSavedPhotosAlbum:[image CGImage]
orientation:(ALAssetOrientation)[image imageOrientation]
completionBlock:completionBlock];
[image release];
[library release];
}
else
completionBlock(nil, error);
if ([[self delegate] respondsToSelector:@selector(captureManagerStillImageCaptured:)]) {
[[self delegate] captureManagerStillImageCaptured:self];
}
}];
}