iOS圖片處理(一)調用系統相機和相冊獲取圖片,給相機添加自定義覆蓋物

[摘要:起首,拍照或從相冊挑選照片須要應用 UIImagePickerController,應用時須要增加兩個協定 #import UIKit/UIKit.h @interface ViewController : UIViewControllerUINavigationControllerDelegate,UIImagePickerControllerDelegate] 

首先,照相或從相冊選擇照片需要使用UIImagePickerController,使用時需要添加兩個協議

#import <UIKit/UIKit.h>  

@interface ViewController : UIViewController<UINavigationControllerDelegate,UIImagePickerControllerDelegate> 

@property (weak, nonatomic) IBOutlet UIScrollView *imageScroll; 
@property (weak, nonatomic) IBOutlet UIImageView *photoImage;  

@end 

從相機獲取圖片的方式: 

//從相機獲取圖片 
- (IBAction)photoFromCamera:(id)sender {

          if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){  
       UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;//設置類型爲相機 

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化

         picker.delegate = self;//設置代理 

        picker.allowsEditing = YES;//設置照片可編輯 

        picker.sourceType = sourceType;

         //picker.showsCameraControls = NO;//默認爲YES

         //創建疊加層
         UIView *overLayView=[[UIView alloc]initWithFrame:CGRectMake(0, 120, 320, 254)]; 

        //取景器的背景圖片,該圖片中間挖掉了一塊變成透明,用來顯示攝像頭獲取的圖片;
         UIImage *overLayImag=[UIImage imageNamed:@"zhaoxiangdingwei.png"]; 

        UIImageView *bgImageView=[[UIImageView alloc]initWithImage:overLayImag]; 

        [overLayView addSubview:bgImageView]; 

        picker.cameraOverlayView=overLayView; 

        picker.cameraDevice=UIImagePickerControllerCameraDeviceFront;//選擇前置攝像頭或後置攝像頭

         [self presentViewController:picker animated:YES completion:^{     


	    }];
    else { 
        NSLog(@"該設備無相機"); 
    }  } 

從相冊獲取圖片的方式: 

//從相冊獲取圖片
 - (IBAction)photoFromAlbum:(id)sender {

          UIImagePickerController *pickerImage = [[UIImagePickerController alloc] init];

     if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
         pickerImage.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

         //pickerImage.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

         pickerImage.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:pickerImage.sourceType];
     }
     pickerImage.delegate = self;

     pickerImage.allowsEditing = NO;

     [self presentViewController:pickerImage animated:YES completion:^{
     }];
  } 
從相冊或相機選擇圖片之後的操作: 

//從相冊選擇圖片後操作
 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
          [picker dismissViewControllerAnimated:YES completion:^{
     }];
     //NSLog(@"%@",info);

     //保存原始圖片
     UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

     [self saveImage:image withName:@"currentImage.png"];
      } 

保存選擇的圖片並顯示在控件上: 

//保存圖片 
- (void) saveImage:(UIImage *)currentImage withName:(NSString *)imageName {

     NSData *imageData = UIImageJPEGRepresentation(currentImage, 0.5);
     // 獲取沙盒目錄

     NSString *fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:imageName];

     // 將圖片寫入文件
     [imageData writeToFile:fullPath atomically:NO];

     //將選擇的圖片顯示出來
     [self.photoImage setImage:[UIImage imageWithContentsOfFile:fullPath]];

     //將圖片保存到disk 
    UIImageWriteToSavedPhotosAlbum(currentImage, nil, nil, nil); } 

取消操作時調用的方法: 

//取消操作時調用 
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

     [picker dismissViewControllerAnimated:YES completion:^{

     }];
 }


DEMO下載地址 :http://download.csdn.net/download/u011918080/6932721
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章