2015-06-16 2 views
-1

Я использую AssetPicker библиотека изображений. Мой запрос, я захвачу режим изображение портрета и отображения изображения с моей точки зрения изображения и зеркально отразить изображение по горизонтали для изображения крахмала и не правильно показывать ..Редактирование изображения iOS

  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
      { 
      __weak typeof(self) weakSelf = self; 

      if (CFStringCompare((CFStringRef) [info object ForKey:UIImagePickerControllerMediaType], kUTTypeImage, 0) == kCFCompareEqualTo) 
      { 
      if(self.segmentedControl.selectedSegmentIndex ==1 && self.segmentedControl.hidden == NO) 
      { 
      self.segmentedControl.selectedSegmentIndex = 0; 
      [self changeAssetType:YES endBlock:^{ 
      _strong typeof(weakSelf) strongSelf = weakSelf; 
      UIImage *image = info[UIImagePickerControllerOriginalImage]; 
      [[NSNotificationCenter defaultCenter] removeObserver:strongSelf name:ALAssetsLibraryChangedNotification object:nil]; 
      [strongSelf.assetsLibrary writeImageToSavedPhotosAlbum:image.CGImage metadata:info[UIImagePickerControllerMediaMetadata] completionBlock:^(NSURL *assetURL, NSError *error) { 
       dispatch_async(dispatch_get_main_queue(), ^{ 
        [self saveAssetsAction:assetURL error:error   isPhoto:YES]; 
       }); 
       DLog(@"writeImageToSavedPhotosAlbum"); 
       }]; 

      }]; 

     } 
      else 
      { 
      UIImage *image = info[UIImagePickerControllerOriginalImage]; 

     [[NSNotificationCenter defaultCenter] removeObserver:self name:ALAssetsLibraryChangedNotification object:nil]; 
     [self.assetsLibrary writeImageToSavedPhotosAlbum:image.CGImage metadata:info[UIImagePickerControllerMediaMetadata] completionBlock:^(NSURL *assetURL, NSError *error) { 
      __strong typeof(weakSelf) strongSelf = weakSelf; 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [strongSelf saveAssetsAction:assetURL error:error isPhoto:YES]; 
      }); 
      DLog(@"writeImageToSavedPhotosAlbum"); 
     }]; 
      } 
     } 
     else 
      { 
      if(self.segmentedControl.selectedSegmentIndex ==0 && self.segmentedControl.hidden == NO) 
      { 
      self.segmentedControl.selectedSegmentIndex = 1; 
      [self changeAssetType:NO endBlock:^{ 
      __strong typeof(weakSelf) strongSelf = weakSelf; 

      [[NSNotificationCenter defaultCenter] removeObserver:strongSelf name:ALAssetsLibraryChangedNotification object:nil]; 
      [strongSelf.assetsLibrary writeVideoAtPathToSavedPhotosAlbum:info[UIImagePickerControllerMediaURL] completionBlock:^(NSURL *assetURL, NSError *error) { 
       DLog(@"assetURL %@",assetURL); 
       dispatch_async(dispatch_get_main_queue(), ^{ 
        [self saveAssetsAction:assetURL error:error isPhoto:NO]; 
        }); 
       }]; 

      }]; 
     } 
       else 
     { 
      [[NSNotificationCenter defaultCenter] removeObserver:self name:ALAssetsLibraryChangedNotification object:nil]; 
      [self.assetsLibrary writeVideoAtPathToSavedPhotosAlbum:info[UIImagePickerControllerMediaURL] completionBlock:^(NSURL *assetURL, NSError *error) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [self saveAssetsAction:assetURL error:error isPhoto:NO]; 
      }); 

     }]; 

    } 
} 

    [picker dismissViewControllerAnimated:YES completion:^{}]; 


} 

зеркально отразить изображение по горизонтали мой код

UIImage *sourceImage = originalimg; 

    CIImage *coreImage = [CIImage imageWithCGImage:sourceImage.CGImage]; 

    UIImage *imgMirror = [UIImage imageWithCIImage:coreImage scale:sourceImage.scale orientation:UIImageOrientationUpMirrored]; 

    CGRect rect = CGRectMake(0, 0, originalimg.size.width, originalimg.size.height); 

     UIGraphicsBeginImageContext(rect.size); 

    [imgMirror drawInRect:rect]; 

    originalimg = UIGraphicsGetImageFromCurrentImageContext(); 

    imgview2.image = originalimg; 
UIGraphicsEndImageContext(); 
+0

Ваш вопрос/работа совершенно неясна ... Вы говорите, что ваше изображение растянуто, и что не так? –

+0

у вас должно быть достаточно очков репутации, чтобы загрузить изображение, показывающее провал. Мы понятия не имеем, что вам нужно ... –

ответ

0

Обмен Значение ширины изображения с высотой изображения.

CGRect rect = CGRectMake(0, 0, originalimg.size.height, originalimg.size.width);

Ваше изображение растягивается, потому что, если ваш собирание изображение с размером 400X800 (портретный режим), то ваш новый образ fliped также создан 400X800 измерения вместо 800x400.

Смежные вопросы