
1:在這個(gè)過(guò)程中,需要首先實(shí)現(xiàn)的是你可以訪問(wèn)用戶的手機(jī)或者相冊(cè),來(lái)調(diào)用合適的方法來(lái)進(jìn)行;
1-1:為了讓圖片顯示比較清晰,我簡(jiǎn)單先使用了測(cè)試性質(zhì)的文件來(lái)簡(jiǎn)單的進(jìn)行開(kāi)啟相機(jī)和訪問(wèn)相冊(cè)

接下來(lái),我使用了提示框來(lái)進(jìn)行了合適的提醒



在網(wǎng)絡(luò)上的大部分方法中,都是將圖片存儲(chǔ)在沙盒路徑下,這種情況下,浪費(fèi)了用戶大量的內(nèi)存,得不償失,,,在我的應(yīng)用中,圖片沒(méi)有存儲(chǔ)到沙盒路徑下面,直接進(jìn)行了圖片的顯示,避免了不必要的內(nèi)存的浪費(fèi);;
2:下面開(kāi)始進(jìn)入圖片上傳的環(huán)節(jié);
1.首先,簡(jiǎn)單的寫(xiě)一下聲明的Block;typedef void(^HttpActionBlock) (id result, NSError* error); ? 這就是我的聲明的Block,用來(lái)返回的地方
2:再來(lái)寫(xiě)一個(gè)方法
+(void)takeGoods:(NSArray *)imageArray andID:(NSString *)idString success:(HttpActionBlock)block;
//傳輸圖片的功能實(shí)現(xiàn); 這個(gè)地方,暴露出來(lái),以便于以后來(lái)進(jìn)行應(yīng)用;,實(shí)現(xiàn)的方法在這里

里面的MyDownLoad是另一個(gè)方法的調(diào)用,下面請(qǐng)仔細(xì)看
在MyDownLoad里面,的。h文件中簡(jiǎn)單的寫(xiě)一句
。。。。。注意這一句
typedef void (^DownloadBlock) (id result, NSError* error);
聲明的方法是
+(void)upLoadImages:(NSString *)url andImageArray:(NSArray *)array parameters:(NSDictionary *)dict success:(DownloadBlock)block;
下面是實(shí)現(xiàn)的方法;(注意你們后臺(tái)給的key的類型,我的后臺(tái)給的是數(shù)組的類型,并且接口只能調(diào)用一次,不能多次調(diào)用,如果你的后臺(tái)對(duì)調(diào)用沒(méi)有要求,那就可以不用這么麻煩,直接調(diào)用就可以了)

下面進(jìn)行圖片的調(diào)用;
我首先聲明了一個(gè)全局的變量,來(lái)進(jìn)行圖片的存儲(chǔ);并且聲明了全局的UIImageView來(lái)進(jìn)行接收一下,
在開(kāi)啟相機(jī)之后,需要進(jìn)行合適的刷新的方法,要不然數(shù)據(jù)沒(méi)有辦法加載在cell上面,如果不需要這個(gè);可以按第一種來(lái)進(jìn)行合理地方法;注意刷新單元格


這是我單元格上面的image加載的方法

最后將圖片進(jìn)行上傳
注意將圖片進(jìn)行轉(zhuǎn)化,轉(zhuǎn)化成為二進(jìn)制的數(shù)據(jù)流,要不然服務(wù)器沒(méi)有辦法進(jìn)行識(shí)別。根據(jù)圖片的類型,可以選擇使用png等方式進(jìn)行轉(zhuǎn)化;

實(shí)現(xiàn)效果



============================================================================================我是分割線,上面為剛寫(xiě)代碼時(shí)候的方法,下面為更新補(bǔ)充============================================================================================
對(duì)不住看過(guò)我文章的朋友們,之前因?yàn)榇a當(dāng)時(shí)寫(xiě)的太垃圾,就沒(méi)有進(jìn)行管理,后來(lái)朋友對(duì)我說(shuō),也想找一個(gè)代碼上傳的東西,我才有產(chǎn)生了改變一下這個(gè)維護(hù)的想法,針對(duì)上面的代碼,適合初學(xué)者看,下面我再提供一個(gè)方法,里面包含數(shù)據(jù)上傳的大小嚴(yán)格控制,原來(lái)對(duì)于初學(xué)者,這個(gè)文章還是比較有用的,因此在今天對(duì)數(shù)據(jù)的上傳進(jìn)行比較處理,下面為代碼展示
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
self.modalPresentationStyle=UIModalPresentationOverCurrentContext;
UIImage *imge = [info objectForKey:UIImagePickerControllerEditedImage];
拿到相機(jī)或者選擇的圖片
/** 圖片上傳壓縮到50K的位置方法
注意,注意,注意,這個(gè)為圖片的壓縮方法
*/
UIImage *newImage =[UIImage scaleImage:imge toKb:50];?
下面為這個(gè)方法的擴(kuò)展,請(qǐng)注意,我說(shuō)的是image的擴(kuò)展
/** 壓縮到指定的大小
*/
+(UIImage *)scaleImage:(UIImage *)image toKb:(NSInteger)kb;
下面為圖片壓縮的實(shí)現(xiàn),把圖片壓縮到指定的大小中去;
+(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(@"當(dāng)前大小:%fkb",(float)[imageData length]/1024.0f);
UIImage *compressedImage = [UIImage imageWithData:imageData];
return compressedImage;
}
到此,基本結(jié)束完結(jié),