弹出操作表从相册或拍照中获取图片信息,并压缩保存到本地,最后上传到公司服务器。

注意事项:公司后台发送请求后,得到的错误结果是JSON text did not start with array or object and option to allow fragments not set;

这是因为 AFNetworking默认把响应结果当成json来处理,(默认manager.responseSerializer = [AFJSONResponseSerializer serializer]) ,很显然,我们请求的百度首页 返回的并不是一个json文本,而是一个html网页,但是AFNetworking并不知道,它坚信请求的结果就是一个json文本!然后固执地以json的形式去解析,显然没办法把一个网页解析成一个字典或者数组,所以产生了上述错误.

然而,我们期望它能够正确地处理这个情形,而不是提示一个错误.

这时候 你必须告诉AFNetworking:别把这个网页当json来处理!

只需要在发送请求前加入:manager.responseSerializer = [AFHTTPResponseSerializer serializer];


主要代码如下:

@interfaceMeTableViewController()

UIImagePickerControllerDelegate,

UINavigationControllerDelegate,UITabBarControllerDelegate>

/**

*我的头像

*/

@property(weak,nonatomic)IBOutletUIImageView*myImageView;

@property(nonatomic,strong)UIAlertController* alertController;

@property(nonatomic,strong)UIAlertAction* cancelAction;

@property(nonatomic,strong)UIAlertAction* cameraAction;

@property(nonatomic,strong)UIAlertAction* albumAction;

@property(nonatomic,strong)KUserInfo* userInfo;

@property(nonatomic,strong)NSString* token;

@property(nonatomic,assign)NSIntegerselectedIndex;

/**

*我的爱心币

*/

@property(weak,nonatomic)IBOutletUILabel*myLoveMoneyLabel;

/**

*我的昵称

*/

@property(weak,nonatomic)IBOutletUILabel*myUserNameLabel;

/**

*我的捐款总额

*/

@property(weak,nonatomic)IBOutletUIButton*launchBtn;

@property(weak,nonatomic)IBOutletUIButton*donateBtn;

@property(weak,nonatomic)IBOutletUILabel*myDonateTotalLabel;

@property(nonatomic,strong)NSIndexPath* indexPath;

@property(nonatomic,strong)NSString* filePath;

@end

@implementationMeTableViewController

#pragma mark-----------懒加载

- (UIAlertController*)alertController

{

if(!_alertController) {

_alertController= [UIAlertControlleralertControllerWithTitle:@"请选择"message:@"获取照片的来源"preferredStyle:UIAlertControllerStyleActionSheet];

[_alertControlleraddAction:self.cancelAction];

[_alertControlleraddAction:self.cameraAction];

[_alertControlleraddAction:self.albumAction];

}

return_alertController;

}

- (UIAlertAction*)cancelAction

{

if(!_cancelAction) {

_cancelAction= [UIAlertActionactionWithTitle:@"取消"style:UIAlertActionStyleCancelhandler:^(UIAlertAction*_Nonnullaction) {

[selfdismissViewControllerAnimated:YEScompletion:nil];

}];

}

return_cancelAction;

}

- (UIAlertAction*)cameraAction

{

if(!_cameraAction) {

_cameraAction= [UIAlertActionactionWithTitle:@"照相机"style:UIAlertActionStyleDestructivehandler:^(UIAlertAction*_Nonnullaction) {

if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

UIImagePickerController*pc = [[UIImagePickerControlleralloc]init];

pc.allowsEditing=YES;

pc.sourceType=UIImagePickerControllerCameraCaptureModeVideo;

pc.delegate=self;

[selfpresentViewController:pcanimated:YEScompletion:nil];

}

}];

}

return_cameraAction;

}

- (UIAlertAction*)albumAction

{

if(!_albumAction) {

_albumAction= [UIAlertActionactionWithTitle:@"相册"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction*_Nonnullaction) {

UIImagePickerController*pc = [[UIImagePickerControlleralloc]init];

pc.allowsEditing=YES;

pc.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;

pc.delegate=self;

[selfpresentViewController:pcanimated:YEScompletion:nil];

}];

}

return_albumAction;

}

- (KUserInfo*)userInfo

{

if(!_userInfo) {

_userInfo= [KUserInfosharedUserInfo];

}

return_userInfo;

}


#pragma mark----------------------------------------------------viewDidLoad

- (void)viewDidLoad {

[superviewDidLoad];

if(self.userInfo.avator) {

[self.myImageViewsetImageWithURL:[NSURLURLWithString:self.userInfo.avator]];

}else{

//默认头像

}


}


//添加图片圆角并加tap手势

- (void)setUpImageView{

[self.myImageViewsetRoundLayer];

[self.myImageViewaddGestureRecognizer:[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(headImageTap)] ];

}

/*图片tap方法的处理,跳转到alertController*/

- (void) headImageTap

{

[selfpresentViewController:self.alertControlleranimated:YEScompletion:nil];

}

#pragma mark----------UIImagePickerControllerDelegate

/**选择图片的处理*/

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

UIImage*image = info[UIImagePickerControllerEditedImage];

self.myImageView.image= image;

//保存到沙盒

[selfsaveImage:imageWithName:@"avator"];

[self dismissViewControllerAnimated:YEScompletion:nil];

}

//保存图片

- (void)saveImage:(UIImage*)tempImage WithName:(NSString*)imageName

{

UIImage*imageNew = tempImage;

//设置image的尺寸(可以自己制定)

CGSizeimagesize = imageNew.size;

imagesize.height=626;

imagesize.width=413;

//对图片大小进行压缩--

imageNew = [selfimageWithImage:imageNewscaledToSize:imagesize];

NSData*imageData =UIImageJPEGRepresentation(imageNew,0.00001);

//return image to png

// NSData* imageData = UIImagePNGRepresentation(tempImage);

NSString* documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0];

NSString* totalPath = [documentPathstringByAppendingPathComponent:imageName];

self.filePath= totalPath;

//保存到document

[imageDatawriteToFile:totalPathatomically:NO];

//保存到NSUserDefaults

NSUserDefaults*userDefaults = [NSUserDefaultsstandardUserDefaults];

[userDefaultssetObject:totalPathforKey:@"avatar"];

//上传服务器

NSLog(@"图片文件地址:%@",self.filePath);

dispatch_async(dispatch_get_global_queue(0,0), ^{

NSLog(@"3%@",[NSThreadcurrentThread]);

[selfsendChangeUserAvatorRequest];

});

}

//对图片尺寸进行压缩--(压缩前3.2M,压缩后为16K)

-(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

[imagedrawInRect: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.

returnnewImage;

}

#pragma mark--------------发送更换用户头像的请求(自己对AFNetworking重新进行封装)kCHANGEAVATORSTR是.pch中声明的各种参数

- (void)sendChangeUserAvatorRequest

{

[AFHTTPSessionManagerGET:kCHANGEAVATORSTR parameters:nilcompletionHandle:^(idmodel,NSError*error){

if(!error) {

[selfshowAlert:@"头像修改成功"];

}else{

NSLog(@"error:%@",error.userInfo);

[selfshowAlert:@"头像修改失败"];

}

}];

}

@end


主要用于个人记录,供参考!!!!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容