@interface ViewController ()<UIAlertViewDelegate,UIImagePickerControllerDelegate,UIActionSheetDelegate,UINavigationControllerDelegate>//<UITableViewDelegate,UITableViewDataSource>
{
UIImage * img_head;
NSData * data_imghead;
}
@property (nonatomic,weak)UIButton *iconBtn;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *iconBtn = [[UIButton alloc]initWithFrame:CGRectMake(40, 40, 70,70)];
iconBtn.backgroundColor =[UIColor whiteColor];
self.iconBtn = iconBtn;
[self.view addSubview:iconBtn];
[iconBtn addTarget:self action:@selector(iocnBtnClick) forControlEvents:UIControlEventTouchUpInside];
}
-(void)iocnBtnClick
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:self
cancelButtonTitle:@"取消"
destructiveButtonTitle:@"拍照上传"
otherButtonTitles:@"本地照片上传",nil];
[actionSheet setBackgroundColor:[UIColor clearColor]];
actionSheet.tag = -2;
[actionSheet showInView:self.view];
}
#pragma mark UIActionSheetDelegate
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
UIImagePickerController * picker = [[UIImagePickerController alloc]init];
switch (buttonIndex)
{
case 0://take photo
{
// [self presentModalViewController:picker animated:YES];
[self presentViewController:picker animated:YES completion:nil];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing = YES;
picker.delegate = self;
break;
}
case 1://upload image
{
// [self presentViewController:elcPicker animated:YES completion:nil];
[self presentViewController:picker animated:YES completion:nil];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsEditing = YES;
picker.delegate = self;
break;
}
case 2://cancel
{
// [self.presentedViewController dismissModalViewControllerAnimated:YES];
break;
}
default:
break;
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
/*添加处理选中图像代码*/
[picker dismissModalViewControllerAnimated:YES];
img_head =[[UIImage alloc] init];
img_head=image;
[self.iconBtn setImage:image forState:0];
data_imghead=[NSData dataWithData:UIImageJPEGRepresentation(image, 1)];
if (data_imghead);
else
{
data_imghead = UIImageJPEGRepresentation(image, 1);
}
[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"datahead"];
[[NSUserDefaults standardUserDefaults]setObject:data_imghead forKey:@"datahead"];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
/*添加代码,处理选中图像又取消的情况*/
// [picker dismissModalViewControllerAnimated:YES];
[picker dismissViewControllerAnimated:YES completion:nil];
}
2.ios上传图片:
1. 将上传图片的路径传过去
2.将图片的base 64编码传过去:
UIImage图片转成base64字符串:
UIImage *_originImage = [UIImage imageNamed:@"full_playlist_hl.png"];
NSData *_data = UIImageJPEGRepresentation(_image, 1.0f);
NSString *base64Data =[data_imghead base64Encoding];
//相当于java里的urlEncode
NSString *baseString =
(__bridge NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)base64Data,
NULL,
CFSTR(":/?#[]@!$&’()*+,;="),
kCFStringEncodingUTF8);
NSLog(@"===Encoded image:\n%@", _encodedImageStr);
Base64字符串转UIImage图片:
NSData *_decodedImageData = [[NSData alloc] initWithBase64Encoding:_encodedImageStr];
UIImage *_decodedImage = [UIImage imageWithData:_decodedImageData];
NSLog(@"===Decoded image size: %@", NSStringFromCGSize(_decodedImage.size));