iOS调用相机并且上传照片的方法详解手机开发

1 调用相机并且上传照片的方法

#import "ViewController.h" 
#import "AFNetworking.h" 
@interface ViewController () <UIActionSheetDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate> 
  
@property (weak, nonatomic) IBOutlet UIImageView *imageView; 
  
@end 
  
@implementation ViewController 
  
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 
  
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"请选择照片" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"相机",@"相册", nil]; 
    /** 
     *  window代表着最高处,所有能看到的view,后面都是window。 
     *  当push相机控制器的时候,self.view就自动移除了。而当dismiss控制器的时候,因为self.view移除了,所有sheet无法寄居在view的上面,而固定在self.view.window,就可以保证,sheet一定在view视图上 
     */ 
    [sheet showInView:self.view.window]; 
      
} 
  
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; 
      
    ipc.delegate = self; 
    ipc.allowsEditing = YES;  //相片是否可编辑  
    switch (buttonIndex) { 
        case 0: 
            if (![UIImagePickerController isSourceTypeAvailable: 
                  UIImagePickerControllerSourceTypeCamera]) return; 
                ipc.sourceType = UIImagePickerControllerSourceTypeCamera; 
            break; 
        case 1: 
            if (![UIImagePickerController isSourceTypeAvailable: 
                  UIImagePickerControllerSourceTypePhotoLibrary]) return; 
                ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
            break; 
         
        default: 
            return; 
            break; 
    } 
    [self presentViewController:ipc animated:YES completion:nil]; 
} 
  
/** 
 *  选择完照片后调用的方法 
 * 
 * 
 *  @param info   所有相片的信息都在这个字典 
 */ 
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
      
    //从字典key获取image的地址 
    UIImage *image = info[UIImagePickerControllerOriginalImage]; 
      
    self.imageView.image = image; 
      
      
} 
  
- (IBAction)upload:(UIButton *)sender { 
      
    AFHTTPRequestOperationManager *mrg = [[AFHTTPRequestOperationManager alloc] init]; 
      
    NSMutableDictionary *params = [NSMutableDictionary dictionary]; 
    params[@"username"] = @"123"; 
  
      
     NSString *url = @"http://192.168.130.110:8080/MJServer/upload"; 
      
    /** 
     *  上传时候调用的方法 
     * 
     *  params   post的参数,字典 
     *  formData formData是post上去的数据 
     *  name     服务器接受文件的名字 
     *  fileName 文件的名字 
     */ 
    [mrg POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
         
        NSData *data = UIImageJPEGRepresentation(self.imageView.image, 1.0); 
        [formData appendPartWithFileData:data name:@"file" fileName:@"1.jpg" mimeType:@"image/jpeg"]; 
          
    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
          
        NSLog(@"上传成功"); 
          
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
         
        NSLog(@"上传失败"); 
    }]; 
  
} 
@end

2 手动存储相片到相册

    for (int i = 0; i<=9; i++) { 
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"00%d.png", i]]; 
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 
        NSLog(@"%@", image); 
        [NSThread sleepForTimeInterval:1];   //存储不可以过快 
    }

3 按钮文字设置成中文

info.plist 中添加Localized resources can be mixed 设置为YES

4 图片选择控制器

当想自己写一个图片选择控制器的时候,需要利用AssetsLibrary.framework,利用这个框架获得所有的相册图片

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/3362.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论