- (void)viewDidLoad 服務器
{ spa
[super viewDidLoad]; code
//獲取Documents文件夾目錄 orm
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 圖片
NSString *documentPath = [path objectAtIndex:0]; 資源
//指定新建文件夾路徑 string
NSString *imageDocPath = [documentPath stringByAppendingPathComponent:@"ImageFile"]; it
//建立ImageFile文件夾 io
[[NSFileManager defaultManager] createDirectoryAtPath:imageDocPath withIntermediateDirectories:YES attributes:nil error:nil]; class
//保存圖片的路徑
self.imagePath = [imageDocPath stringByAppendingPathComponent:@"image.png"];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:YES];
//根據圖片路徑載入圖片
UIImage *image=[UIImage imageWithContentsOfFile:self.imagePath];
if (image == nil) {
//顯示默認
[changeImg setBackgroundImage:[UIImage imageNamed:@"user_photo@2x.png"] forState:UIControlStateNormal];
}else {
//顯示保存過的
[changeImg setBackgroundImage:image forState:UIControlStateNormal];
}
}
- (void)dealloc {
[imagePath release];
[changeImg release];
[super dealloc];
}
- (IBAction)changeImage:(id)sender {
UIActionSheet *myActionSheet = [[UIActionSheet alloc]
initWithTitle:nil
delegate:self
cancelButtonTitle:@"取消"
destructiveButtonTitle:nil
otherButtonTitles: @"從相冊選擇", @"拍照",nil];
[myActionSheet showInView:self.view];
[myActionSheet release];
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
switch (buttonIndex) {
case 0:
//從相冊選擇
[self LocalPhoto];
break;
case 1:
//拍照
[self takePhoto];
break;
default:
break;
}
}
//從相冊選擇
-(void)LocalPhoto{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
//資源類型爲圖片庫
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
//設置選擇後的圖片可被編輯
picker.allowsEditing = YES;
[self presentModalViewController:picker animated:YES];
[picker release];
}
//拍照
-(void)takePhoto{
//資源類型爲照相機
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
//判斷是否有相機
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]){
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
//設置拍照後的圖片可被編輯
picker.allowsEditing = YES;
//資源類型爲照相機
picker.sourceType = sourceType;
[self presentModalViewController:picker animated:YES];
[picker release];
}else {
NSLog(@"該設備無攝像頭");
}
}
#pragma Delegate method UIImagePickerControllerDelegate
//圖像選取器的委託方法,選完圖片後回調該方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{
//當圖片不爲空時顯示圖片並保存圖片
if (image != nil) {
//圖片顯示在界面上
[changeImg setBackgroundImage:image forState:UIControlStateNormal];
//如下是保存文件到沙盒路徑下
//把圖片轉成NSData類型的數據來保存文件
NSData *data;
//判斷圖片是否是png格式的文件
if (UIImagePNGRepresentation(image)) {
//返回爲png圖像。
data = UIImagePNGRepresentation(image);
}else {
//返回爲JPEG圖像。
data = UIImageJPEGRepresentation(image, 1.0);
}
//保存
[[NSFileManager defaultManager] createFileAtPath:self.imagePath contents:data attributes:nil];
}
//關閉相冊界面
[picker dismissModalViewControllerAnimated:YES];
}
// 改變圖像的尺寸,方便上傳服務器 - (UIImage *) scaleFromImage: (UIImage *) image toSize: (CGSize) size { UIGraphicsBeginImageContext(size); [image drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; }