1:在这个过程中,需要首先实现的是你可以访问用户的手机或者相册,来调用合适的方法来进行;
1-1:为了让图片显示比较清晰,我简单先使用了测试性质的文件来简单的进行开启相机和访问相册
接下来,我使用了提示框来进行了合适的提醒
在网络上的大部分方法中,都是将图片存储在沙盒路径下,这种情况下,浪费了用户大量的内存,得不偿失,,,在我的应用中,图片没有存储到沙盒路径下面,直接进行了图片的显示,避免了不必要的内存的浪费;;
2:下面开始进入图片上传的环节;
1.首先,简单的写一下声明的Block;typedef void(^HttpActionBlock) (id result, NSError* error); 这就是我的声明的Block,用来返回的地方
2:再来写一个方法
+(void)takeGoods:(NSArray *)imageArray andID:(NSString *)idString success:(HttpActionBlock)block;
//传输图片的功能实现; 这个地方,暴露出来,以便于以后来进行应用;,实现的方法在这里
里面的MyDownLoad是另一个方法的调用,下面请仔细看
在MyDownLoad里面,的。h文件中简单的写一句
。。。。。注意这一句
typedef void (^DownloadBlock) (id result, NSError* error);
声明的方法是
+(void)upLoadImages:(NSString *)url andImageArray:(NSArray *)array parameters:(NSDictionary *)dict success:(DownloadBlock)block;
下面是实现的方法;(注意你们后台给的key的类型,我的后台给的是数组的类型,并且接口只能调用一次,不能多次调用,如果你的后台对调用没有要求,那就可以不用这么麻烦,直接调用就可以了)
下面进行图片的调用;
我首先声明了一个全局的变量,来进行图片的存储;并且声明了全局的UIImageView来进行接收一下,
在开启相机之后,需要进行合适的刷新的方法,要不然数据没有办法加载在cell上面,如果不需要这个;可以按第一种来进行合理地方法;注意刷新单元格
这是我单元格上面的image加载的方法
最后将图片进行上传
注意将图片进行转化,转化成为二进制的数据流,要不然服务器没有办法进行识别。根据图片的类型,可以选择使用png等方式进行转化;
实现效果
============================================================================================我是分割线,上面为刚写代码时候的方法,下面为更新补充============================================================================================
对不住看过我文章的朋友们,之前因为代码当时写的太垃圾,就没有进行管理,后来朋友对我说,也想找一个代码上传的东西,我才有产生了改变一下这个维护的想法,针对上面的代码,适合初学者看,下面我再提供一个方法,里面包含数据上传的大小严格控制,原来对于初学者,这个文章还是比较有用的,因此在今天对数据的上传进行比较处理,下面为代码展示
-(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;
}
到此,基本结束完结,