上传图片到服务器和图片内存处理以及拍照或从相册选取图片的小总结

今天做项目用到的上传图片到服务器,现在来总结一下具体流程。

首先我们看下UIImagePickerControllerSourceTypePhotoLibrary:选取相册中的图像。图像选取控制器以该模式显示时会浏览系统照片库的根目录。

UIImagePickerControllerSourceTypeCamera:打开相机拍照选取图像。(对了,最近新出的IOS10需要对访问相册授权。)

在info.plist文件下添加 :

相机权限

<key>NSCameraUsageDescription</key>

<string>cameraDesciption</string>

相册权限

<key>NSPhotoLibraryUsageDescription</key>

<string>photoLibraryDesciption</string>


~~~~~~~~不然APP会闪退
下面是具体代码:

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

    imagepicker.delegate = self;//代理

    if (type == 2) {

            imagepicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

            

        imagepicker.allowsEditing=YES;//允许编辑图片

       

    }else{

        imagepicker.sourceType = UIImagePickerControllerSourceTypeCamera;

        imagepicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

        imagepicker.allowsEditing = YES;

    }

     [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:imagepicker animated:YES completion:nil];


这个就会跳到系统的选择图片或者拍照界面了,然后选择图片需要实现这个协议方法,下面是具体代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info

{

    UIImage *image = info[UIImagePickerControllerOriginalImage];

    [self saveImage:image WithName:@"userAvatar.jpg"];

    [self.picButton setImage:image forState:UIControlStateNormal] ;//添加从相册选取的图片

    [picker dismissViewControllerAnimated:YES completion:nil];

    

}


由于很多服务器不能直接上传图片(通常是通过文件的方式上传),所以我们要把选择的图片保存到本地,就好的方式就是保存到 document。最开始我想过为什么我们不直接获取选择的图片的Path然后直接上传呢,后来在网上查了发现IOS并不能直接获取相册文件的路径。下面是保存到document的代码:

- (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName

{

    NSData* imageData = UIImageJPEGRepresentation(tempImage,0.2f);

    NSString* documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString* totalPath = [documentPath stringByAppendingPathComponent:imageName];

    

    //保存到 document

    [imageData writeToFile:totalPath atomically:NO];

    self.picPath = totalPath;


}

在保存到 document的时候我又出现了个问题,在给文件写保存名字的时候
必须要加上文件后缀名(格式名);不然系统会直接报错。
好了,我们已经得到图片的路径了,下面就是通过文件上传到服务器了。这个看具体服务器的方法了,就不在多说。 但是在上传之前,我们得对图片进行一下处理,因为苹果的照片通常有10多M这个大,所以我们要压缩一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值