提到從攝像頭/相冊獲取圖片是面向終端用戶的,由用戶去瀏覽並選擇圖片爲程序使用。在這裏,我們需要過UIImagePickerController類來和用戶交互。
使用UIImagePickerController和用戶交互,我們需要實現2個協議。
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裏面--以及圖片格式的轉換