iOS关于图片上传的方法,其中可以包含多张

1240

1:在这个过程中,需要首先实现的是你可以访问用户的手机或者相册,来调用合适的方法来进行;

1-1:为了让图片显示比较清晰,我简单先使用了测试性质的文件来简单的进行开启相机和访问相册

1240

接下来,我使用了提示框来进行了合适的提醒

1240

 

1240

 

1240

在网络上的大部分方法中,都是将图片存储在沙盒路径下,这种情况下,浪费了用户大量的内存,得不偿失,,,在我的应用中,图片没有存储到沙盒路径下面,直接进行了图片的显示,避免了不必要的内存的浪费;;

 

2:下面开始进入图片上传的环节;

1.首先,简单的写一下声明的Block;typedef void(^HttpActionBlock) (id result, NSError* error);   这就是我的声明的Block,用来返回的地方

2:再来写一个方法

+(void)takeGoods:(NSArray *)imageArray andID:(NSString *)idString success:(HttpActionBlock)block;

//传输图片的功能实现; 这个地方,暴露出来,以便于以后来进行应用;,实现的方法在这里

1240

里面的MyDownLoad是另一个方法的调用,下面请仔细看

在MyDownLoad里面,的。h文件中简单的写一句

。。。。注意这一句

typedef void (^DownloadBlock) (id result, NSError* error);

声明的方法是

+(void)upLoadImages:(NSString *)url andImageArray:(NSArray *)array parameters:(NSDictionary *)dict success:(DownloadBlock)block;

下面是实现的方法;(注意你们后台给的key的类型,我的后台给的是数组的类型,并且接口只能调用一次,不能多次调用,如果你的后台对调用没有要求,那就可以不用这么麻烦,直接调用就可以了)

1240

下面进行图片的调用;

我首先声明了一个全局的变量,来进行图片的存储;并且声明了全局的UIImageView来进行接收一下,

在开启相机之后,需要进行合适的刷新的方法,要不然数据没有办法加载在cell上面,如果不需要这个;可以按第一种来进行合理地方法;注意刷新单元格

1240

 

1240

这是我单元格上面的image加载的方法

1240

最后将图片进行上传

注意将图片进行转化,转化成为二进制的数据流,要不然服务器没有办法进行识别。根据图片的类型,可以选择使用png等方式进行转化;

1240

实现效果

 

 

 

1240

 

1240

 

 

1240

 

 

 

 

 

 

 

============================================================================================我是分割线,上面为刚写代码时候的方法,下面为更新补充============================================================================================

对不住看过我文章的朋友们,之前因为代码当时写的太垃圾,就没有进行管理,后来朋友对我说,也想找一个代码上传的东西,我才有产生了改变一下这个维护的想法,针对上面的代码,适合初学者看,下面我再提供一个方法,里面包含数据上传的大小严格控制,原来对于初学者,这个文章还是比较有用的,因此在今天对数据的上传进行比较处理,下面为代码展示

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info

{

self.modalPresentationStyle=UIModalPresentationOverCurrentContext;

UIImage *imge = [info objectForKey:UIImagePickerControllerEditedImage];

拿到相机或者选择的图片

/** 图片上传压缩到50K的位置方法

注意,注意,注意,这个为图片的压缩方法

*/

UIImage *newImage =[UIImage scaleImage:imge toKb:50]; 

 

下面为这个方法的扩展,请注意,我说的是image的扩展

/** 压缩到指定的大小

*/

+(UIImage *)scaleImage:(UIImage *)image toKb:(NSInteger)kb;

下面为图片压缩的实现,把图片压缩到指定的大小中去;

+(UIImage *)scaleImage:(UIImage *)image toKb:(NSInteger)kb{

if (!image) {

return image;

}

if (kb<1) {

return image;

}

kb*=1024;

CGFloat compression = 0.9f;

CGFloat maxCompression = 0.1f;

NSData *imageData = UIImageJPEGRepresentation(image, compression);

while ([imageData length] > kb && compression > maxCompression) {

compression -= 0.1;

imageData = UIImageJPEGRepresentation(image, compression);

}

NSLog(@"当前大小:%fkb",(float)[imageData length]/1024.0f);

UIImage *compressedImage = [UIImage imageWithData:imageData];

return compressedImage;

}

到此,基本结束完结,

转载于:https://my.oschina.net/u/2958713/blog/900155

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值