亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

ios利用 AFN 上傳相冊或者拍照圖片

2020-07-26 02:46:58
字體:
來源:轉載
供稿:網友

由于項目中多處需要上傳圖片,我們可以自定義上傳圖片請求,自定義調取相冊及拍照,方便多處使用時調用。

主要步驟:

1.第一步:請求上傳你選取的相冊圖片或者拍照圖片(經過壓縮處理)

2.第二步:獲取到第一步圖片url上傳給服務器

3.第三步:回顯圖片(當然進入該界面時先判斷是否有圖片,無圖則展示占位圖片,否則就回顯圖片)

廢話不多說,直接上代碼:

1)封裝的上傳圖片的網絡請求(圖片壓縮) QTXUploadImage 文件

// 利用 afn 上傳一張圖片#import <Foundation/Foundation.h>@interface QTXUploadImage : NSObject// 上傳圖片的網絡請求(圖片壓縮)+ (void)post:(NSString *)url image:(UIImage *)image name:(NSString *)name success:(void (^)(id json))success failure:(void (^)(NSError *error))failure;@end
#import "QTXUploadImage.h"#import "AFNetworking.h"#import "QTXAccount.h"#import "QTXAccountTool.h"@implementation QTXUploadImage/** * 上傳圖片的網絡請求(圖片壓縮) * * @param url       上傳圖片的網絡請求地址 * @param name       和后臺包名一致 * */+ (void)post:(NSString *)url image:(UIImage *)image name:(NSString *)name success:(void (^)(id json))success failure:(void (^)(NSError *error))failure {  // 1.創建網絡管理者  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  // 2.拼接請求參數url 也可在具體控制器請求里傳入  NSDictionary *dict = @{@"userId" : [QTXAccountTool account].userId};  // 3.發送請求  [manager POST:url parameters:dict constructingBodyWithBlock:   ^void(id<AFMultipartFormData> formData) {     NSData *imageData = UIImageJPEGRepresentation(image, 0.5);//進行圖片壓縮     // 使用日期生成圖片名稱     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];     formatter.dateFormat = @"yyyyMMddHHmmss";     NSString *fileName = [NSString stringWithFormat:@"%@.png",[formatter stringFromDate:[NSDate date]]];     // 任意的二進制數據MIMEType application/octet-stream     [formData appendPartWithFileData:imageData name:name fileName:fileName mimeType:@"image/png"];   } success:^void(NSURLSessionDataTask * task, id responseObject) {     if (success) {       success(responseObject);     }   } failure:^void(NSURLSessionDataTask * task, NSError * error) {     if (failure) {       failure(error);     }   }];}@end

2)封裝的拍照/從相冊選擇 QTXImagePicker 文件

// 拍照/從相冊選擇#import <Foundation/Foundation.h>typedef void(^QTXImagePickerFinishAction)(UIImage *image);@interface QTXImagePicker : NSObject/** @param viewController 用于present UIImagePickerController對象 @param allowsEditing  是否允許用戶編輯圖像 */+ (void)showImagePickerFromViewController:(UIViewController *)viewController              allowsEditing:(BOOL)allowsEditing               finishAction:(QTXImagePickerFinishAction)finishAction;@end
#import "QTXImagePicker.h"@interface QTXImagePicker()<UIActionSheetDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate>@property (nonatomic, weak) UIViewController *viewController;@property (nonatomic, copy) QTXImagePickerFinishAction finishAction;@property (nonatomic, assign) BOOL allowsEditing;@endstatic QTXImagePicker *qtxImagePickerInstance = nil;@implementation QTXImagePicker+ (void)showImagePickerFromViewController:(UIViewController *)viewController allowsEditing:(BOOL)allowsEditing finishAction:(QTXImagePickerFinishAction)finishAction {  if (qtxImagePickerInstance == nil) {    qtxImagePickerInstance = [[QTXImagePicker alloc] init];  }  [qtxImagePickerInstance showImagePickerFromViewController:viewController                        allowsEditing:allowsEditing                        finishAction:finishAction];}- (void)showImagePickerFromViewController:(UIViewController *)viewController              allowsEditing:(BOOL)allowsEditing               finishAction:(QTXImagePickerFinishAction)finishAction {  _viewController = viewController;  _finishAction = finishAction;  _allowsEditing = allowsEditing;  UIActionSheet *sheet = nil;  if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {    sheet = [[UIActionSheet alloc] initWithTitle:nil                      delegate:self                  cancelButtonTitle:@"取消"               destructiveButtonTitle:nil                  otherButtonTitles:@"拍照", @"從相冊選擇", nil];  }else {    sheet = [[UIActionSheet alloc] initWithTitle:nil                      delegate:self                  cancelButtonTitle:@"取消"               destructiveButtonTitle:nil                  otherButtonTitles:@"從相冊選擇", nil];  }  UIView *window = [UIApplication sharedApplication].keyWindow;  [sheet showInView:window];}- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {  NSString *title = [actionSheet buttonTitleAtIndex:buttonIndex];  if ([title isEqualToString:@"拍照"]) {    UIImagePickerController *picker = [[UIImagePickerController alloc] init];    picker.delegate = self;    picker.sourceType = UIImagePickerControllerSourceTypeCamera;    picker.allowsEditing = _allowsEditing;    [_viewController presentViewController:picker animated:YES completion:nil];  }else if ([title isEqualToString:@"從相冊選擇"]) {    UIImagePickerController *picker = [[UIImagePickerController alloc] init];//    [picker.navigationBar setBarTintColor:QTXNavColor]; // 修改相冊的導航條的背景顏色    picker.delegate = self;    picker.allowsEditing = YES;    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;    [_viewController presentViewController:picker animated:YES completion:nil];  }else {    qtxImagePickerInstance = nil;  }}- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {  UIImage *image = info[UIImagePickerControllerEditedImage];  if (image == nil) {    image = info[UIImagePickerControllerOriginalImage];  }  if (_finishAction) {    _finishAction(image);  }  [picker dismissViewControllerAnimated:YES completion:^{}];  qtxImagePickerInstance = nil;}- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {  if (_finishAction) {    _finishAction(nil);  }  [picker dismissViewControllerAnimated:YES completion:^{}];  qtxImagePickerInstance = nil;}@end

當使用時,在所需使用的控制器里調用:

[QTXImagePicker showImagePickerFromViewController:self allowsEditing:YES finishAction:^(UIImage *image) {      if (image) {        self.idSideImage = image;        [QTXUploadImage post:QTX_xsz1Url image:image name:@"xsz1" success:^(id json) {          // 第一步請求上傳          QTXLog(@"圖像上傳請求成功 %@", json);          self.idSide = json[@"data"];        } failure:^(NSError *error) {          QTXLog(@"學生證圖像上傳請求失敗 %@", error);        }];      }    }];

第二步和第三步 需要和各位自己后臺server聯調,就屬于普通的get/post請求了,這邊就不放代碼了喲

插一下,我們產品沒讓拍照的照片存儲到相冊

// 存儲圖片名稱:001.png ~ 009.pngfor (int i = 1; i<=9; i++) {   UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"00%d.png", i]];   UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);   [NSThread sleepForTimeInterval:1];  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品久久久| 九九视频直播综合网| 成人疯狂猛交xxx| 国产精品久久久久久超碰| 国产精品99久久久久久久久| 久久精品91久久久久久再现| 色综合色综合久久综合频道88| 97超级碰在线看视频免费在线看| 亚洲激情第一页| 国产精品美女主播在线观看纯欲| 91精品国产777在线观看| 亚洲国产高潮在线观看| 亚洲成人精品久久| 国产亚洲精品美女久久久久| 日韩在线播放一区| 尤物yw午夜国产精品视频明星| 日韩欧美精品在线观看| 性欧美长视频免费观看不卡| 少妇精69xxtheporn| 国产精品扒开腿做爽爽爽的视频| 96sao精品视频在线观看| 国产欧美精品va在线观看| 国产成人aa精品一区在线播放| 欧美多人爱爱视频网站| 欧美丝袜美女中出在线| 在线看日韩欧美| 亚洲三级黄色在线观看| 亚洲a成v人在线观看| 中文字幕精品国产| 国产精品一区二区久久久久| 欧美精品午夜视频| 欧美富婆性猛交| 国产一区二区三区视频在线观看| 91在线观看免费高清完整版在线观看| 日韩在线欧美在线| 久久久久免费精品国产| 国产成人精品av| 日韩av网站导航| 国产成人精品午夜| 成人黄色免费在线观看| 久久久久久久一区二区| 亚洲a在线观看| 欧美夫妻性生活视频| 国产精品久久久久久久久久新婚| 国产福利精品av综合导导航| 欧美美女18p| 欧美综合一区第一页| 操人视频在线观看欧美| 亚洲精品一区二三区不卡| 国产精品揄拍500视频| 久久国产精品电影| 日本久久中文字幕| 亚洲第一精品自拍| 91美女高潮出水| 日本一区二区三区在线播放| 68精品国产免费久久久久久婷婷| 国产z一区二区三区| 5566日本婷婷色中文字幕97| 国产精品亚洲一区二区三区| 久久精品青青大伊人av| 国产精品嫩草影院久久久| 亚洲人成自拍网站| 国内外成人免费激情在线视频网站| 欧美性xxxxxxx| 国产精品7m视频| 国产欧美va欧美va香蕉在线| 91色p视频在线| 久久久久久久色| 伊人伊成久久人综合网小说| 91sa在线看| 97久久久免费福利网址| 欧美日韩电影在线观看| 热门国产精品亚洲第一区在线| 8090成年在线看片午夜| 久久99国产综合精品女同| 日韩免费黄色av| 黄网站色欧美视频| 日韩男女性生活视频| 亚洲精品国产综合久久| 成人在线免费观看视视频| 久久精品国产2020观看福利| 亚洲精品国产精品自产a区红杏吧| 成人免费看吃奶视频网站| 亚洲精品久久视频| 红桃av永久久久| 欧美精品久久久久a| 成人妇女免费播放久久久| 国产精品久久久久久久久久久新郎| 91成人精品网站| 欧美日韩性视频| 91午夜在线播放| 在线观看久久久久久| 欧美一区二区三区图| 久久久久久com| 亚洲国产成人久久| 欧美激情精品久久久久| 欧美日本在线视频中文字字幕| 成人免费xxxxx在线观看| 亚洲精品国产精品国产自| 久久国产精品首页| 成人亲热视频网站| 亚洲精品一区二区在线| 日韩精品高清在线| 久久精品久久精品亚洲人| 日韩中文字幕av| 欧美成人午夜免费视在线看片| 日韩电影中文字幕在线观看| 国产噜噜噜噜噜久久久久久久久| 久久在线免费视频| 亚洲欧美一区二区三区情侣bbw| 在线精品国产成人综合| 日韩电影免费在线观看中文字幕| 欧美成人午夜免费视在线看片| 亚洲成年人在线| 欧美性猛交xxxx乱大交| 日韩欧美精品在线观看| 中文字幕av一区二区三区谷原希美| 另类少妇人与禽zozz0性伦| 日韩免费视频在线观看| 国产成人精品综合| 免费av在线一区| 亚洲国产精品人人爽夜夜爽| 国产激情久久久| 亚洲国产精品推荐| 91中文字幕在线| 亚洲国产精品悠悠久久琪琪| 欧美夫妻性视频| 欧美大片在线影院| 亚洲视频免费一区| 欧美日韩国产在线看| 青青久久av北条麻妃海外网| 免费91麻豆精品国产自产在线观看| 欧美日韩成人在线播放| 国产精品成人在线| 97精品视频在线播放| 国产精品亚洲美女av网站| 亚洲精品www| 日韩中文字幕视频在线观看| 美日韩在线视频| 最近更新的2019中文字幕| 青青草原一区二区| 日韩av免费在线播放| 夜夜嗨av色综合久久久综合网| 蜜臀久久99精品久久久久久宅男| 精品视频中文字幕| 中文字幕一精品亚洲无线一区| 欧美亚洲日本网站| 国产精品久久久久久久久久久久| 欧美中在线观看| 国产精品一区二区久久久| 国产精品成人av在线| 国产偷亚洲偷欧美偷精品| 这里只有视频精品| 日韩高清免费在线| 欧美专区在线播放| 亚洲精品免费在线视频| 亚洲九九九在线观看| 国产日韩欧美在线视频观看| 成人黄色av网| 国产一区二区三区丝袜| 国产va免费精品高清在线观看| 日本免费一区二区三区视频观看| 久99九色视频在线观看| 亚洲国产成人av在线|