UIImagePickerController

本文介绍了一个iOS应用中图片选择器的实现方法,包括如何使用UIImagePickerController从相册或相机选择图片,并进行编辑处理,同时提供了图片保存及上传的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.添加接口

<UIImagePickerControllerDelegate,UINavigationControllerDelegate>

2,跳转方法

- (void)albumBtnDown
{
    [albumViewremoveFromSuperview];
    //从相册获取图片
    [self showImagePickerForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
}

- (void)photoBtnDown
{
    [albumViewremoveFromSuperview];
    if ([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        //从相机获取图片
        [selfshowImagePickerForSourceType:UIImagePickerControllerSourceTypeCamera];
    }
   else{
        UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"相机不可用" message:nildelegate:selfcancelButtonTitle:@"关闭"otherButtonTitles:nil,nil];
        [alertshow];
        [alertrelease];
    }
}


3,主体实现

- (void)showImagePickerForSourceType:(UIImagePickerControllerSourceType)sourceType
{
    UIImagePickerController *imagePicker = [[UIImagePickerControlleralloc] init];
    imagePicker.modalPresentationStyle =UIModalPresentationCurrentContext;
    imagePicker.sourceType = sourceType;
    imagePicker.allowsEditing =YES;
    imagePicker.delegate =self;
    [selfpresentViewController:imagePicker animated:YEScompletion:nil];
    [imagePickerrelease];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [selfdismissViewControllerAnimated:YEScompletion:nil];

}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    if ( picker.sourceType==UIImagePickerControllerSourceTypeCamera  ) {  //照相机
        UIImage* cameraImage = [infoobjectForKey:@"UIImagePickerControllerOriginalImage"];
        UIImageWriteToSavedPhotosAlbum(cameraImage,nil,nil,nil);
        userImageView.image = cameraImage;
        NSString *imageNameStr = @"cameraHeaderImage.png";
        [self saveImage:cameraImageWithName:imageNameStr];
        [self uploadHeaderImage:imageNameStr];
        
    }else{  //相册
        UIImage *image = [infoobjectForKey:@"UIImagePickerControllerEditedImage"];
        userImageView.image = image;
        //保存图片
        NSString *imageNameStr = @"userHeaderImage.png";
        [self saveImage:imageWithName:imageNameStr];
        
        [self uploadHeaderImage:imageNameStr];
    }

    [picker dismissViewControllerAnimated:YEScompletion:nil];
}

- (void)uploadHeaderImage:(NSString*)imageNameStr
{
    //上传图片 HttpRequest 省略
    

    }
}

- (void)saveImage:(UIImage*)tempImage WithName:(NSString*)imageName
{
    //图片保存到 app document目录下
   NSData *imageData = UIImagePNGRepresentation(tempImage);
    NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
   NSString *documentsDirectory = [paths objectAtIndex:0];
   NSString *fullPathToFile = [documentsDirectorystringByAppendingPathComponent:imageName];
    [imageDatawriteToFile:fullPathToFile atomically:NO];
}

- (NSString*)documentFolderPath:(NSString*)imageName
{
 //   return [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents/"] stringByAppendingPathComponent:imageName];

   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,                                                                         NSUserDomainMask, YES);
   NSString *documentsDirectory = [paths objectAtIndex:0];
   NSString *filePath = [documentsDirectory stringByAppendingPathComponent:imageName];
   return filePath;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值