2016-09-29 27 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