2014-07-18 3 views
2

사용자가 사진을 찍어 편집 할 수있는 앱을 쓰고 있습니다. 밝기/명암/채도에 대한 UISliders 도구를 구현하고 Core Image Filter 클래스를 사용하고 있습니다. 앱을 열면 사진을 찍어 올바르게 표시 할 수 있습니다. 그러나 그림을 편집하고 설명 된 슬라이더 도구 중 하나를 사용하면 이미지가 반 시계 방향으로 90도 회전합니다. 나는 문제가 내가 배치 한 중단 점을 기준으로 brightnessSlider 방법에서 유래 있다고 생각CIFilter를 사용한 후 이미지가 자동으로 회전합니다.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    self.navigationItem.hidesBackButton = YES; //hide default nav 

    //get image to display 
    DBConnector *dbconnector = [[DBConnector alloc] init]; 
    album.moments = [dbconnector getMomentsForAlbum:album.title]; 
    Moment *mmt = [album.moments firstObject]; 
    _imageView.image = [mmt.moment firstObject]; 

    CGImageRef aCGImage = _imageView.image.CGImage; 
    CIImage *aCIImage = [CIImage imageWithCGImage:aCGImage]; 
    _editor = [CIFilter filterWithName:@"CIColorControls" keysAndValues:@"inputImage", aCIImage, nil]; 

    _context = [CIContext contextWithOptions: nil]; 
    [self startEditControllerFromViewController:self]; 

} 

//cancel and finish buttons 
- (BOOL) startEditControllerFromViewController: (UIViewController*) controller { 

    [_cancelEdit addTarget:self action:@selector(cancelEdit:) forControlEvents:UIControlEventTouchUpInside]; 
    [_finishEdit addTarget:self action:@selector(finishEdit:) forControlEvents:UIControlEventTouchUpInside]; 

    return YES; 
} 

//adjust brightness 
- (IBAction)brightnessSlider:(UISlider *)sender { 

    [_editor setValue:[NSNumber numberWithFloat:_brightnessSlider.value] forKey: @"inputBrightness"]; 

    CGImageRef cgiimg = [_context createCGImage:_editor.outputImage fromRect:_editor.outputImage.extent]; 
    _imageView.image = [UIImage imageWithCGImage: cgiimg]; 
    CGImageRelease(cgiimg); 
} 

: 여기에 문제의 코드가있다. 내 사진의 자동 회전을 중지 할 수있는 방법이 있습니까? 그렇지 않은 경우 어떻게 다시 정상 방향으로 회전시킬 수 있습니까?

답변

4

게시 후 몇 분 후에 나는 내 자신의 질문에 대한 대답을 알아 냈습니다. 그림을 이동. 어쨌든, 단순히 다음 슬라이더 방식 변경 :

- (IBAction)brightnessSlider:(UISlider *)sender { 

    [_editor setValue:[NSNumber numberWithFloat:_brightnessSlider.value] forKey: @"inputBrightness"]; 

    CGImageRef cgiimg = [_context createCGImage:_editor.outputImage fromRect:_editor.outputImage.extent]; 
    UIImageOrientation originalOrientation = _imageView.image.imageOrientation; 
    CGFloat originalScale = _imageView.image.scale; 

    _imageView.image = [UIImage imageWithCGImage: cgiimg scale:originalScale orientation:originalOrientation]; 
    CGImageRelease(cgiimg); 

} 

을 이것은 단순히 원래의 화상 방향 및 크기를 기록하고, 데이터를 다시있는 UIImage로 변환 될 때 그것들을 재 설정한다. 희망이 다른 사람을 도와주세요!

관련 문제