iOS讀取本地txt文件為亂碼的解決方法

提到從攝像頭/相冊獲取圖片是面向終端用戶的形导,由用戶去瀏覽并選擇圖片為程序使用。在這里丝格,我們需要過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];

}

//打開相機

- (IBAction)touch_photo:(id)sender {

// for iphone

UIImagePickerController *pickerImage = [[UIImagePickerController alloc] init];

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

pickerImage.sourceType = UIImagePickerControllerSourceTypeCamera;

pickerImage.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:pickerImage.sourceType];

}

pickerImage.delegate =self;

pickerImage.allowsEditing =YES;//自定義照片樣式

[self presentViewController:pickerImage animated:YES completion:nil];

}

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

在和用戶交互之后琅攘,用戶選擇好圖片后,會回調選擇結束的方法松邪。

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

{

//初始化imageNew為從相機中獲得的--

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

//設置image的尺寸

CGSize imagesize = imageNew.size;

imagesize.height =626;

imagesize.width =413;

//對圖片大小進行壓縮--

imageNew = [self imageWithImage:imageNew scaledToSize:imagesize];

NSData *imageData = UIImageJPEGRepresentation(imageNew,0.00001);

if(m_selectImage==nil)

{

m_selectImage = [UIImage imageWithData:imageData];

NSLog(@"m_selectImage:%@",m_selectImage);

[self.TakePhotoBtn setImage:m_selectImage forState:UIControlStateNormal];

[picker dismissModalViewControllerAnimated:YES];

return ;

}

[picker release];

}

//對圖片尺寸進行壓縮--

-(UIImage*)imageWithImage:(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;

}

圖片保存到本地document里面--以及圖片格式的轉換

IOS開發(fā)之保存圖片到Documents目錄及PNG坞琴,JPEG格式相互轉換

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

NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

if ([mediaType isEqualToString:@"public.image"]){

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

NSData *data;

if (UIImagePNGRepresentation(image) == nil) {

data = UIImageJPEGRepresentation(image, 1);

} else {

data = UIImagePNGRepresentation(image);

}

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString *filePath = [NSString stringWithString:[self getPath:@"image1"]];? ? ? ? //將圖片存儲到本地documents

[fileManager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];

[fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.png"] contents:dataattributes:nil];

UIImage *editedImage = [[UIImage alloc] init];

editedImage = image;

CGRect rect = CGRectMake(0, 0, 64, 96);

UIGraphicsBeginImageContext(rect.size);

[editedImage drawInRect:rect];

editedImage = UIGraphicsGetImageFromCurrentImageContext();

UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];

imageButton.frame = CGRectMake(10, 10, 64, 96);

[imageButton setImage:editedImage forState:UIControlStateNormal];

[self.view addSubview:imageButton];

[imageButton addTarget:self action:@selector(imageAction:)forControlEvents:UIControlEventTouchUpInside];

[ipc dismissModalViewControllerAnimated:YES];

} else {

NSLog(@"MEdia");

}

上面的代碼是當從相冊里面選取圖片之后保存到本地程序沙盒,在上面我們得到的圖片中不能夠得到圖片名字逗抑,

以及不清楚圖片格式剧辐,所以這個時候我們需要將其轉換成NSdata二進制存儲,

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

NSData *data;

if (UIImagePNGRepresentation(image) == nil) {

data = UIImageJPEGRepresentation(image, 1);

} else {

data = UIImagePNGRepresentation(image);

}

UIImagePNGRepresentation轉換PNG格式的圖片為二進制,如果圖片的格式為JPEG則返回nil;

[fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.png"] contents:data attributes:nil];? ? 將圖片保存為PNG格式

[fileManager createFileAtPath:[filePath stringByAppendingString:@"/image.jpg"] contents:data attributes:nil];? 將圖片保存為JPEG格式

我們也可以寫成下面的格式存儲圖片

NSString *pngImage = [filePath stringByAppendingPathComponent:@"Documents/image.png"];

NSString *jpgImage = [filePath stringByAppendingPathComponent:@"Documents/image.jpg"];

[data writeToFile:pngImage atomically:YES];

[data writeToFile:jpgImage atomically:YES];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末涂身,一起剝皮案震驚了整個濱河市锈麸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌引颈,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異同波,居然都是意外死亡,警方通過查閱死者的電腦和手機叠国,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門未檩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人粟焊,你說我怎么就攤上這事冤狡。” “怎么了项棠?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵悲雳,是天一觀的道長。 經常有香客問我沾乘,道長怜奖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任翅阵,我火速辦了婚禮歪玲,結果婚禮上,老公的妹妹穿的比我還像新娘掷匠。我一直安慰自己滥崩,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布讹语。 她就那樣靜靜地躺著钙皮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上短条,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天导匣,我揣著相機與錄音,去河邊找鬼茸时。 笑死贡定,一個胖子當著我的面吹牛,可吹牛的內容都是我干的可都。 我是一名探鬼主播缓待,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渠牲!你這毒婦竟也來了旋炒?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤签杈,失蹤者是張志新(化名)和其女友劉穎瘫镇,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芹壕,經...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡汇四,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了踢涌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片通孽。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖睁壁,靈堂內的尸體忽然破棺而出背苦,到底是詐尸還是另有隱情,我是刑警寧澤潘明,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布行剂,位于F島的核電站,受9級特大地震影響钳降,放射性物質發(fā)生泄漏厚宰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一遂填、第九天 我趴在偏房一處隱蔽的房頂上張望铲觉。 院中可真熱鬧,春花似錦吓坚、人聲如沸撵幽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盐杂。三九已至逗载,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間链烈,已是汗流浹背厉斟。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留测垛,地道東北人捏膨。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像食侮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子目胡,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內容

  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進行加密后保存到用戶偏好設置( [NSUserDefaul...
    彬至睢陽閱讀 2,932評論 0 7
  • 一锯七、iOS中的沙盒機制 iOS應用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立誉己、封閉眉尸、安全的空間,叫做沙盒巨双。它一...
    tzhtodd閱讀 1,282評論 0 2
  • iOS開發(fā)系列--網絡開發(fā) 概覽 大部分應用程序都或多或少會牽扯到網絡開發(fā)噪猾,例如說新浪微博、微信等筑累,這些應用本身可...
    lichengjin閱讀 3,661評論 2 7
  • 一袱蜡、iOS中的沙盒機制 iOS應用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立慢宗、封閉坪蚁、安全的空間,叫做沙盒镜沽。它一...
    1d5cb7cff98d閱讀 1,775評論 0 0
  • iOS開發(fā)-文件管理(一) 一敏晤、iOS中的沙盒機制 iOS應用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立缅茉、封閉...
    MacShare閱讀 1,802評論 0 6