2016-09-29 28 views
1

我面对奇怪的问题,而在iOS 10翻转图像不工作在iOS上10

翻转的形象在这里是我的代码。

uiImage = [[UIImage alloc] initWithCIImage:ciImage]; 
flippedImg = [UIImage imageWithCIImage:ciImage scale:uiImage.scale orientation:UIImageOrientationDownMirrored]; 
captureImgView.image = flippedImg; 

我正在一个ciImage和得到成uiImage。 然后翻转那UIImage。 此代码适用于所有iOS版本,低于10. 但在10及以上版本无效。

我尝试了所有取向,

UIImageOrientationUpMirrored 
UIImageOrientationLeftMirrored 
UIImageOrientationUp 
UIImageOrientationRight 
UIImageOrientationDown 
UIImageOrientationLeft 
UIImageOrientationDownMirrored 
UIImageOrientationRightMirrored 

但没有什么工作。

我正在从前置摄像头拍摄自拍照并将该自拍照附加到UIImageView。 我不想附上从前置摄像头拍摄的翻转图像。 这里我想要原始图像。

请指导我一样。
在此先感谢。

回答

0

我想你错过了什么。在我的代码它的正常工作......

@interface ViewController() 

@property (weak, nonatomic) IBOutlet UIImageView *imgOriginal; 
@property (weak, nonatomic) IBOutlet UIImageView *imgFlipped; 

@end 

#pragma mark - UIImagePicker delegate 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *uiImage = info[UIImagePickerControllerOriginalImage]; 
    CGImageRef cgImage = uiImage.CGImage; 
    CIImage *ciImage = [CIImage imageWithCGImage:cgImage]; 

    UIImage *flippedImg = [UIImage imageWithCIImage:ciImage scale:uiImage.scale orientation:UIImageOrientationRight]; 

    _imgOriginal.image = uiImage; 
    _imgFlipped.image = flippedImg; 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

这里输出:

Flip_Image

在iOS系统10,这将是这样的:

#pragma mark - UIImagePicker delegate 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *uiImage = info[UIImagePickerControllerOriginalImage]; 
    CGImageRef cgImage = uiImage.CGImage; 
    //CIImage *ciImage = [CIImage imageWithCGImage:cgImage]; 

    //UIImage *flippedImg = [UIImage imageWithCIImage:ciImage scale:uiImage.scale orientation:UIImageOrientationRight]; 
    UIImage *flippedImg = [UIImage imageWithCGImage:cgImage scale:uiImage.scale orientation:UIImageOrientationLeftMirrored]; 

    _imgOriginal.image = uiImage; 
    _imgFlipped.image = flippedImg; 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 
+0

是的,我只得到这一个。但我不想翻转图像。我想要表现出来。并从前置摄像头拍摄。图像直接放在UIImageView上工作在我的末端... – Sagar

+0

然后直接使用原始图像.... 'UIImage * uiImage = [UIImage imageNamed:@“wall1.png”]; _imgOriginal.image = uiImage;' – VRAwesome

+0

我从前置摄像头捕获图像。 not direct image – Sagar

2

我的得到了解决我的拥有。 我做了什么, 我检查了系统的iOS10版本, 从前置摄像头捕捉到的图像,从CIImage转换为UIImage并将其放在UIImageView上。 一旦我把它放在UIImageView, 我旋转UIImageView使用CGAffineTransformMakeRotation适合适当的位置和地点。

这里是示例代码。

NSString *systemVersion = [UIDevice currentDevice].systemVersion; 
captureImgView = [[UIImageView alloc]init]; 
if([systemVersion floatValue] < 10.0) 
{ 
    uiImage = [[UIImage alloc] initWithCIImage:ciImage]; 
    flippedImg = [UIImage imageWithCIImage:ciImage scale:uiImage.scale orientation:UIImageOrientationDownMirrored]; 
    captureImgView.image = flippedImg; 
    captureImgView.transform = CGAffineTransformMakeRotation(M_PI_2); 
} 
else 
{ 
    uiImage = [[UIImage alloc] initWithCIImage:ciImage]; 
    flippedImg = [UIImage imageWithCIImage:ciImage scale:uiImage.scale orientation:UIImageOrientationUpMirrored]; 
    captureImgView.image = uiImage; 
    captureImgView.transform = CGAffineTransformMakeRotation ((M_PI * 270/180.0)); 
} 
+0

那么翻转后的图像又有什么意义呢? – khunshan

+0

我刚刚翻转了图像,所以基本上我做了什么,捕获了图像,然后iOS10自动翻转它,我检查了iOS版本,如果它是> iOS10,然后再翻转它。所以基本上iOS10图像翻转两次。 – Sagar