攝像頭/相冊編程和圖片上傳

這幾天在搞iphone上面一個應用的開發(fā)圆凰,里面有需要攝像頭/相冊編程和圖片上傳的問題婶恼,在這里總結(jié)一下燃乍。

【部分知識】

iphone中圖像通常存儲在4個地方【相冊楞卡、應用程序包霜运、沙盒、Internet】蒋腮,通過這4個源淘捡,我們就可以存取應用圖片。

相冊

iphone的相冊包含攝像頭膠卷+用戶計算機同步的部分照片池摧。用戶可以通過UIImagePickerController類提供的交互對話框來從相冊中選擇圖像焦除。但是,注意:相冊中的圖片機器路徑無法直接從應用程序訪問作彤,只能通過終端用戶去選擇和使用相冊圖片

應用程序包

應用程序包可能會將圖像與可執(zhí)行程序膘魄、Info.plist文件和其他資源一同存儲。我們可以通過本地文件路徑來讀取這些基于包的圖像并在應用程序中顯示它們竭讳。

沙盒

借助沙盒创葡,我們可以把圖片存儲到Documents、Library代咸、tmp文件夾中蹈丸。這些文件均可有應用程序讀取,且可以通過文件路徑創(chuàng)建圖像呐芥。盡管沙盒外的部分從技術上說是可行的逻杖,但是apple表明這些部分不在appstore應用程序允許訪問的范圍之內(nèi)。

Internet

應用程序可以通過圖片的URL來訪問Internet上的資源思瘟。

以上為一些小知識荸百,來自《iphone開發(fā)秘籍(第二版)》,可以自己去參考此書滨攻。

下面開始切入正題够话,從攝像頭/相冊獲取圖片蓝翰,壓縮圖片,上傳圖片女嘲。

從攝像頭/相冊獲取圖片

剛剛在上面的知識中提到從攝像頭/相冊獲取圖片是面向終端用戶的畜份,由用戶去瀏覽并選擇圖片為程序使用。在這里欣尼,我們需要過UIImagePickerController類來和用戶交互爆雹。

使用UIImagePickerController和用戶交互,我們需要實現(xiàn)2個協(xié)議愕鼓。

View Code


#pragma mark 從用戶相冊獲取活動圖片

- (void)pickImageFromAlbum

{

imagePicker = [[UIImagePickerController alloc] init];

imagePicker.delegate = self;

imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

imagePicker.allowsEditing = YES;

[self presentModalViewController:imagePicker animated:YES];

}

我們來看看上面的從相冊獲取圖片钙态,我們首先要實例化UIImagePickerController對象,然后設置imagePicker對象為當前對

象菇晃,設置imagePicker的圖片來源為UIImagePickerControllerSourceTypePhotoLibrary册倒,表明當前圖

片的來源為相冊,除此之外還可以設置用戶對圖片是否可編輯磺送。

View Code

#pragma mark 從攝像頭獲取活動圖片

- (void)pickImageFromCamera

{

imagePicker = [[UIImagePickerController alloc] init];

imagePicker.delegate = self;

imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;

imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

imagePicker.allowsEditing = YES;

[self presentModalViewController:imagePicker animated:YES];

}

以上是從攝像頭獲取圖片驻子,和從相冊獲取圖片只是圖片來源的設置不一樣,攝像頭圖片的來源為UIImagePickerControllerSourceTypeCamera估灿。

在和用戶交互之后拴孤,用戶選擇好圖片后,會回調(diào)選擇結(jié)束的方法甲捏。

View Code

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

{

UIImage *image= [info objectForKey:@"UIImagePickerControllerOriginalImage"];

if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)

{

//??????? UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

}

theImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(120.0, 120.0)];

UIImage *midImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(210.0, 210.0)];

UIImage *bigImage = [UtilMethod imageWithImageSimple:image scaledToSize:CGSizeMake(440.0, 440.0)];

[theImage retain];

[self saveImage:theImage WithName:@"salesImageSmall.jpg"];

[self saveImage:midImage WithName:@"salesImageMid.jpg"];

[self saveImage:bigImage WithName:@"salesImageBig.jpg"];

[self dismissModalViewControllerAnimated:YES];

[self refreshData];

[picker release];

}

在回調(diào)結(jié)束的方法中演熟,我們對圖片進行了大小的處理,為圖片的上傳做準備司顿。

縮放圖片

縮放圖片比較簡單芒粹,就直接放上代碼,讓大家參考一下大溜。

View Code

//壓縮圖片

+ (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize

{

// Create a graphics image context

UIGraphicsBeginImageContext(newSize);

// Tell the old image to draw in this new context, with the desired

// new size

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

// Get the new image from the context

UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

// End the context

UIGraphicsEndImageContext();

// Return the new image.

return newImage;

}


存儲圖像

在上面我們獲取到了圖片并對圖片進行了壓縮化漆,通過之前的小知識了解到,將應用需要的一些圖片存入沙盒是個不錯的選擇钦奋,而且應用程序可以直接通過路徑去方法沙盒中的圖片座云,在這里我們將圖片存入沙盒中的Documents目錄下。

View Code

#pragma mark 保存圖片到document

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

{

NSData* imageData = UIImagePNGRepresentation(tempImage);

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString* documentsDirectory = [paths objectAtIndex:0];

// Now we get the full path to the file

NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imageName];

// and then we write it out

[imageData writeToFile:fullPathToFile atomically:NO];

}

從Documents目錄下獲取圖片

要從Documents下面獲取圖片付材,我們首先需要獲取Documents目錄的路徑朦拖。

View Code

#pragma mark 從文檔目錄下獲取Documents路徑

- (NSString *)documentFolderPath

{

return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

}

然后,我們便可以通過文件名厌衔,去訪問獲取資源了璧帝。

View Code

上傳圖片

項目中我們使用了ASIFormHttpRequest的開源框架,http請求的部分代碼如下富寿,http返回以及相關回調(diào)方法略去睬隶。

View Code

- (void)upLoadSalesBigImage:(NSString *)bigImage MidImage:(NSString *)midImage SmallImage:(NSString *)smallImage

{

NSURL *url = [NSURL URLWithString:UPLOAD_SERVER_URL];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request setPostValue:@"photo" forKey:@"type"];

[request setFile:bigImage forKey:@"file_pic_big"];

[request buildPostBody];

[request setDelegate:self];

[request setTimeOutSeconds:TIME_OUT_SECONDS];

[request startAsynchronous];

}

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锣夹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子苏潜,更是在濱河造成了極大的恐慌银萍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恤左,死亡現(xiàn)場離奇詭異砖顷,居然都是意外死亡,警方通過查閱死者的電腦和手機赃梧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豌熄,“玉大人授嘀,你說我怎么就攤上這事÷嘞眨” “怎么了蹄皱?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芯肤。 經(jīng)常有香客問我巷折,道長,這世上最難降的妖魔是什么崖咨? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任锻拘,我火速辦了婚禮,結(jié)果婚禮上击蹲,老公的妹妹穿的比我還像新娘署拟。我一直安慰自己,他們只是感情好歌豺,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布推穷。 她就那樣靜靜地躺著,像睡著了一般类咧。 火紅的嫁衣襯著肌膚如雪馒铃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天痕惋,我揣著相機與錄音区宇,去河邊找鬼。 笑死值戳,一個胖子當著我的面吹牛萧锉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播述寡,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼柿隙,長吁一口氣:“原來是場噩夢啊……” “哼叶洞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起禀崖,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤衩辟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后波附,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艺晴,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年掸屡,在試婚紗的時候發(fā)現(xiàn)自己被綠了封寞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡仅财,死狀恐怖狈究,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盏求,我是刑警寧澤抖锥,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站碎罚,受9級特大地震影響磅废,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荆烈,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一拯勉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧憔购,春花似錦谜喊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鞋邑,卻和暖如春诵次,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枚碗。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工逾一, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肮雨。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓遵堵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陌宿,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容