标签:
#pragma mark - changeUserPhoto
- (void)changeUserPhoto {
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消"
destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"从手机相册选择", nil];
actionSheet.tag = 120;
[actionSheet showInView:self.view];
}
#pragma mark - actionSheet
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (actionSheet.tag == 120) {
if (buttonIndex == 0) //拍照
{
[self takePhoto];
}
else if (buttonIndex == 1) //打开本地相册
{
[self openLocalPhoto];
}
}
}
#pragma mark - TakePhoto
/**
* 开始拍照
*/
- (void)takePhoto
{
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = sourceType;
[self presentViewController:picker animated:YES completion:nil];
} else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
message:@"抱歉,你的设备不支持该功能!"
delegate:self
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert show];
return;
}
}
#pragma mark - openLibrary
// 打开本地相册
- (void)openLocalPhoto
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self;
picker.allowsEditing = YES;
[self presentViewController:picker animated:YES completion:nil];
}
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
NSString *strType = [info objectForKey:UIImagePickerControllerMediaType];
if ([strType isEqualToString:@"public.image"]) //当选择的类型是图片
{
UIImage *image = [info objectForKey:@"UIImagePickerControllerEditedImage"]; //先把图片转成NSData
NSLog(@"image = %@", image);
[reader dismissViewControllerAnimated:YES completion:nil]; //关闭相册界面
//压缩图片
UIImage *scalImage = [self scaleFromImage:image];
imageView.image = scalImage;
//保存到本地
NSString *strfileName = [self saveImage:scalImage];
//上传头像
NSString *strUrl = [NSString stringWithFormat:@"%@", @"http://192.168.1.108:8080/resources/user/"];
strUrl = [strUrl stringByAppendingString:@"headimg/"];
strUrl = [strUrl stringByAppendingString:@"13061622013"];
NSURL *url = [NSURL URLWithString:strUrl];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];
[request addRequestHeader:@"Accept" value:@"application/json"];
[request setFile:strfileName forKey:@"headImg"];
[request setRequestMethod:@"POST"];
[request setDidFailSelector:@selector(ASIFormDataRequestFailed:)];
[request setDidFinishSelector:@selector(ASIFormDataRequestSuceed:)];
[request startAsynchronous];
}
}
#pragma mark - savaImage// 保存图像
- (NSString *)saveImage:(UIImage*)image
{
NSData *data;
if (UIImagePNGRepresentation(image) == nil)
{
data = UIImageJPEGRepresentation(image, 1.0);
}
else
{
data = UIImagePNGRepresentation(image);
}
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
NSString *filePath = [docPath stringByAppendingPathComponent:@"tianImage.png"];
BOOL result = [data writeToFile:filePath atomically:YES];
if (result) {
NSLog(@"写入成功");
}
return filePath;
}#pragma mark - scalePhoto// 图像压缩
- (UIImage *)scaleFromImage:(UIImage *)image
{
if (!image)
{
return nil;
}
NSData *data = UIImagePNGRepresentation(image);
CGFloat dataSize = data.length/1024;
CGFloat width = image.size.width;
CGFloat height = image.size.height;
CGSize size;
if (dataSize<=50) //小于50k
{
return image;
}
else if (dataSize<=100) //小于100k
{
size = CGSizeMake(width/2.f, height/2.f);
}
else if (dataSize<=200) //小于200k
{
size = CGSizeMake(width/4.f, height/4.f);
}
else if (dataSize<=500) //小于500k
{
size = CGSizeMake(width/4.f, height/4.f);
}
else if (dataSize<=1000) //小于1M
{
size = CGSizeMake(width/6.f, height/6.f);
}
else if (dataSize<=2000) //小于2M
{
size = CGSizeMake(width/10.f, height/10.f);
}
else //大于2M
{
size = CGSizeMake(width/12.f, height/12.f);
}
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if (!newImage)
{
return image;
}
return newImage;
}
#pragma mark - ASIHTTPRequestDelegate
- (void)ASIFormDataRequestSuceed:(ASIFormDataRequest *)request
{
}
- (void)ASIFormDataRequestFailed:(ASIFormDataRequest *)request
{
NSError *error = [request error];
NSLog(@"error:%@",error);
}
修改单张图片上传到服务器
标签:
原文地址:http://www.cnblogs.com/tian-sun/p/4849777.html