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;
}
到此,基本結束完結,