2016-06-24 2 views
3

landscapeLeftとlandscapeRightの向きでカメラから画像を撮影した後、風景モードで画像を保存します。結果画像が添付されています。続きイメージを常に正しい方向に見せるにはどうすればよいですか?

は私のコードであり、すべてのものは私が試した:私は、カスタムのアルバムに画像を保存するためにPHPhotoLibraryを使用しています

// Take Image Button Method 
- (void)snapButtonPressed:(UIButton *)button 
    { 
    [self.camera capture:^(LLSimpleCamera *camera, UIImage *image,   NSDictionary *metadata, NSError *error) 
     { 
     if(!error) 
      { 

     NSString * info = [NSString stringWithFormat:@"Size: %@ - Orientation: %ld", NSStringFromCGSize(image.size), (long)image.imageOrientation]; 
     NSLog(@"IMAGE Meta Data:%@",info); 

     [CustomAlbum addNewAssetWithImage:image toAlbum:[CustomAlbum getMyAlbumWithName:CSAlbum] onSuccess:^(NSString *ImageId) 
     { 
      NSLog(@"IMAGE ID:%@",ImageId); 
      recentImg = ImageId; 
     } 
      onError:^(NSError *error) 
     { 
      NSLog(@"probelm in saving image"); 
     }]; 
    } 
    else 
    { 
     NSLog(@"An error has occured: %@", error); 
    } 
} 
     exactSeenImage:YES]; 
} 
  • リスト項目

enter image description here

+0

元画像のexif情報を保存する必要がありますが、PHPhotoLibraryに関してこれに関する情報が見つかりませんでした。あなたは問題がexifローテーション情報の損失にあることを知ったので、あなたはより良い運を持っていますか? – mondjunge

+0

@mukeshあなたは私のコードをチェックしていますか? –

答えて

0

Iは、カメラから画像をキャプチャしながら、修正画像の回転を実現するためにこの方法を使用して持っています。 これはあなたにとって便利だと思います。

- (UIImage *) fixrotation:(UIImage *)image { 


if (image.imageOrientation == UIImageOrientationUp) return image; 
CGAffineTransform transform = CGAffineTransformIdentity; 

switch (image.imageOrientation) { 
    case UIImageOrientationDown: 
    case UIImageOrientationDownMirrored: 
     transform = CGAffineTransformTranslate(transform, image.size.width, image.size.height); 
     transform = CGAffineTransformRotate(transform, M_PI); 
     break; 

    case UIImageOrientationLeft: 
    case UIImageOrientationLeftMirrored: 
     transform = CGAffineTransformTranslate(transform, image.size.width, 0); 
     transform = CGAffineTransformRotate(transform, M_PI_2); 
     break; 

    case UIImageOrientationRight: 
    case UIImageOrientationRightMirrored: 
     transform = CGAffineTransformTranslate(transform, 0, image.size.height); 
     transform = CGAffineTransformRotate(transform, -M_PI_2); 
     break; 
    case UIImageOrientationUp: 
    case UIImageOrientationUpMirrored: 
     break; 
} 

switch (image.imageOrientation) { 
    case UIImageOrientationUpMirrored: 
    case UIImageOrientationDownMirrored: 
     transform = CGAffineTransformTranslate(transform, image.size.width, 0); 
     transform = CGAffineTransformScale(transform, -1, 1); 
     break; 

    case UIImageOrientationLeftMirrored: 
    case UIImageOrientationRightMirrored: 
     transform = CGAffineTransformTranslate(transform, image.size.height, 0); 
     transform = CGAffineTransformScale(transform, -1, 1); 
     break; 
    case UIImageOrientationUp: 
    case UIImageOrientationDown: 
    case UIImageOrientationLeft: 
    case UIImageOrientationRight: 
     break; 
} 

// Now we draw the underlying CGImage into a new context, applying the transform 
// calculated above. 
CGContextRef ctx = CGBitmapContextCreate(NULL, image.size.width, image.size.height, 
             CGImageGetBitsPerComponent(image.CGImage), 0, 
             CGImageGetColorSpace(image.CGImage), 
             CGImageGetBitmapInfo(image.CGImage)); 
CGContextConcatCTM(ctx, transform); 
switch (image.imageOrientation) { 
    case UIImageOrientationLeft: 
    case UIImageOrientationLeftMirrored: 
    case UIImageOrientationRight: 
    case UIImageOrientationRightMirrored: 
     // Grr... 
     CGContextDrawImage(ctx, CGRectMake(0,0,image.size.height,image.size.width), image.CGImage); 
     break; 

    default: 
     CGContextDrawImage(ctx, CGRectMake(0,0,image.size.width,image.size.height), image.CGImage); 
     break; 
} 

// And now we just create a new UIImage from the drawing context 
CGImageRef cgimg = CGBitmapContextCreateImage(ctx); 
UIImage *img = [UIImage imageWithCGImage:cgimg]; 
CGContextRelease(ctx); 
CGImageRelease(cgimg); 
return img; 

} 
関連する問題