iOS开发 东芝WifiSD卡 读取单反相机照片

iOS开发 东芝WifiSD卡 读取单反相机照片

因项目中需要读取东芝wifiSDcard中的图片,结合网上的资料 写出了一下Demo 做下记录

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface VZWifiSDCardImage : NSObject
@property (nonatomic,copy) NSString *imagePath;        //图片地址
@property (nonatomic,copy) NSString *imageName;        //图片名称
@end


@interface VZWifiSDCardFolder : NSObject
@property (nonatomic,copy) NSString *folderName;        //文件名称
@property (nonatomic,strong) NSMutableArray<VZWifiSDCardImage *> *floderimages;        //文件夹下的图片
@end

@interface VZWifiSDCardImageManager : NSObject
//获取东芝WifiSDcard上面的图片内容
+(NSMutableArray<VZWifiSDCardFolder *> *)getImagesForWifiSDCard;
@end

NS_ASSUME_NONNULL_END

#import "VZWifiSDCardImage.h"

@implementation VZWifiSDCardImage

@end

@implementation VZWifiSDCardFolder

@end

@implementation VZWifiSDCardImageManager
+(NSArray<VZWifiSDCardFolder *> *)getImagesForWifiSDCard{
    NSString *baseURL = @"http://192.168.0.1/command.cgi?op=100&DIR=/DCIM";
    NSString *basePath =  @"http://192.168.0.1/DCIM";
    NSURL *allData = [NSURL URLWithString:baseURL];
    //以字符串的状态读出来DCIM的文件夹下的所有内容
    NSString *stringOfFilesICDCIM = [NSString stringWithContentsOfURL:allData encoding:NSUTF8StringEncoding error:NULL];
    //获得DCIM下所有的文件夹
    NSArray *array_files = [stringOfFilesICDCIM componentsSeparatedByString:@"\r\n"];
   
    //提前声明。
    NSMutableArray <VZWifiSDCardFolder *>  *folderArray = [[NSMutableArray alloc]init];
    //分别遍历各个文件夹。
    [array_files enumerateObjectsUsingBlock:^(NSString *  _Nonnull obj_folderNmae, NSUInteger idx, BOOL * _Nonnull stop) {
        //筛选符合条件的进行遍历
        BOOL eligible =  [self returnBOOLValueWithString:obj_folderNmae];
        if (eligible) {
            //再分别筛选他们的字段。
            NSArray *array_atts = [obj_folderNmae componentsSeparatedByString:@","];
            //文件夹名称就是第2个字段。
            NSLog(@"%@/%@",array_atts.firstObject,array_atts[1]);
            //进行存储文件夹的名字
            VZWifiSDCardFolder *folder = [[VZWifiSDCardFolder alloc]init];
            folder.folderName = array_atts [1]; // 100CANON 文件夹的名字。。。。。。
            //再次遍历取出该文件夹下的文件路径。。。(二级路径);
            NSURL *urlForFolderInfo = [NSURL URLWithString:[baseURL stringByAppendingPathComponent:folder.folderName]];
            
            //取出该文件夹下的文件路径
            NSString *imageDCIM = [NSString stringWithContentsOfURL:urlForFolderInfo encoding:NSUTF8StringEncoding error:NULL];
            NSArray *array_image = [imageDCIM componentsSeparatedByString:@"\r\n"];
            folder.floderimages = [[NSMutableArray alloc]init];
            [array_image enumerateObjectsUsingBlock:^(NSString *  _Nonnull obj_image, NSUInteger idx, BOOL * _Nonnull stop) {
                if ([self returnBOOLTwoWithString:obj_image]) {
                    //取得文件的名称
                    NSArray *VZimages = [obj_image componentsSeparatedByString:@","];
                    VZWifiSDCardImage *image = [[VZWifiSDCardImage alloc] init];
                    image.imageName = VZimages[1];
                    image.imagePath = [basePath stringByAppendingFormat:@"/%@/%@", folder.folderName, image.imageName];
                    [folder.floderimages addObject:image];
                }
                
            }];

            if (folder.folderName != nil) {
                [folderArray addObject:folder];
            }
        }
        
    }];
    
    return folderArray;
    

}

+(BOOL)returnBOOLValueWithString:(NSString *)folderName{
    if (folderName.length > 0 && ![folderName containsString:@"WLAN"] && ![folderName containsString:@".JPG"] && ![folderName containsString:@"TSB"] &&  ![folderName containsString:@"EOSMISC"]) {
        return YES;
    }
    return NO;
}

+(BOOL)returnBOOLTwoWithString:(NSString *)stringOfImageAttributes{
    if (stringOfImageAttributes.length > 0 && ![stringOfImageAttributes containsString:@"WLAN"] && [stringOfImageAttributes.uppercaseString containsString:@".JPG"]) {
        return YES;
    }
    return NO;
}

@end

在ViewController里面的内容

#import "ViewController.h"
#import "XJTableViewCell.h"
#import <SDWebImage/SDWebImage.h>
#import "VZWifiSDCardImage.h"

@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong) UITableView *tableView;        //表格视图
@property (nonatomic,strong) NSMutableArray<VZWifiSDCardFolder *> *arrayOfFoldersWithImagesInFlashair;        //照片信息
@end
@implementation ViewController



- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.tableView];
    [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass(XJTableViewCell.class) bundle:nil] forCellReuseIdentifier:NSStringFromClass(XJTableViewCell.class)];
    self.tableView.rowHeight = 100;
    
    [self getData];
   

   
}


-(void)getData{
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        
        self.arrayOfFoldersWithImagesInFlashair = [VZWifiSDCardImageManager getImagesForWifiSDCard];
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.tableView reloadData];
        });
//        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//            [self getData];
//        });
    });
   
}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    XJTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass(XJTableViewCell.class)];
    VZWifiSDCardImage * modele = self.arrayOfFoldersWithImagesInFlashair[indexPath.section].floderimages[indexPath.row];
    
    [cell.icon sd_setImageWithURL:[NSURL URLWithString:modele.imagePath] placeholderImage:nil];
    cell.imageName.text = modele.imageName;
    return cell;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.arrayOfFoldersWithImagesInFlashair[section].floderimages.count;
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return self.arrayOfFoldersWithImagesInFlashair.count;
}

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return self.arrayOfFoldersWithImagesInFlashair[section].folderName;
}


-(UITableView *)tableView{
    if (!_tableView) {
        _tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStyleGrouped];
        _tableView.delegate = self;
        _tableView.dataSource = self;
    }
    return _tableView;
}
@end

另附上在网上搜索到的资源

功能 执行的HTTP GET请求命令参数示例
获取文件列表 http://flashair/command.cgi?op=100&DIR=/ DCIM
获取的文件数量 http://flashair/command.cgi?op=101&DIR=/ DCIM
获取更新状态 http://flashair/command.cgi?op=102
获取SSID http://flashair/command.cgi?op=104
获取网络密码 http://flashair/command.cgi?op=105
获取MAC地址 http://flashair/command.cgi?op=106
设置浏览器语言 http://flashair/command.cgi?op=107
获取固件版本 http://flashair/command.cgi?op=108
获取控制图像 http://flashair/command.cgi?op=109
获取无线局域网模式 http://flashair/command.cgi?op=110
设置无线局域网超时长度 http://flashair/command.cgi?op=111
获取应用程序的唯一信息 http://flashair/command.cgi?op=117
获取CID http://flashair/command.cgi?op=120
获取从共享内存中的数据 http://flashair/command.cgi?op=130&ADDR=0&LEN=8
设置数据共享内存 http://flashair/command.cgi?op=131&ADDR=0&LEN=8&DATA=0123ABCD
获取空扇区数 http://flashair/command.cgi?op=140
让照片分享模式 http://flashair/command.cgi?op=200&DIR=/ DCIM/100__TSB&DATE=17153
禁用的照片分享方式 http://flashair/command.cgi?op=201
获取的照片分享模式状态 http://flashair/command.cgi?op=202
获取SSID的照片分享方式 http://flashair/command.cgi?op=203
获取缩略图 http://flashair/thumbnail.cgi?/DCIM/100__TSB/DSC_100.JPG
设置连接超时 http://flashair/config.cgi?MASTERCODE=0123456789AB&APPAUTOTIME=3000000&APPMODE=4
设置应用程序的唯一信息 http://flashair/config.cgi?MASTERCODE=0123456789AB&APPINFO=0123ABCD4567EFGH
设置无线局域网模式 http://flashair/config.cgi?MASTERCODE=0123456789AB&APPMODE=4
设置网络安全密钥 http://flashair/config.cgi?MASTERCODE=0123456789AB&APPNETWORKKEY=12345678
设置的SSID http://flashair/config.cgi?MASTERCODE=0123456789AB&APPSSID=flashair
设置网络安全密钥互联网直通模式 http://flashair/config.cgi?MASTERCODE=0123456789AB&BRGNETWORKKEY=12345678
设置SSID的网络直通模式 http://flashair/config.cgi?MASTERCODE=0123456789AB&BRGSSID=myhomelan
设置无线网卡开机画面的路径 http://flashair/config.cgi?MASTERCODE=0123456789AB&CIPATH=/ DCIM/100__TSB/FA000001.jpg
设置主码 http://flashair/config.cgi?MASTERCODE=0123456789AB
上传文件 http://flashair/upload.cgi
删除文件 http://flashair/upload.cgi?DEL=/DCIM/100__TSB/DSC_100.JPG
设置上传目录 http://flashair/upload.cgi?UPDIR=/DCIM/101__TSB
设置系统时间 http://flashair/upload.cgi?FTIME=0x00210000
限制主机设备的写入能力 http://flashair/upload.cgi?WRITEPROTECT=ON
设置连接超时时间 http://flashair/config.cgi?APPAUTOTIME=3000000
应用程序的唯一信息 http://flashair/config.cgi?APPINFO=0123ABCD4567EFGH
无线局域网模式 http://flashair/config.cgi?APPMODE=4
名称 http://flashair/config.cgi?APPNAME=myflashair
网络安全密钥 http://flashair/config.cgi?APPNETWORKKEY=12345678
SSID http://flashair/config.cgi?APPSSID=flashair
网络安全密钥进行互联网直通模式 http://flashair/config.cgi?BRGNETWORKKEY=12345678
SSID的网络直通模式 http://flashair/config.cgi?BRGSSID=myhomelan
卡ID http://flashair/config.cgi?CID=02544d53573038470750002a0200c201
无线开机画面的路径 http://flashair/config.cgi?CIPATH=/ DCIM/100__TSB/FA000001.jpg
默认配置的标志 http://flashair/config.cgi?LOCK=1
主码 http://flashair/config.cgi?MASTERCODE=0123456789AB
产品代码 http://flashair/config.cgi?PRODUCT=FlashAir
上传启用操作标志 http://flashair/config.cgi?UPLOAD=1
供应商代码 http://flashair/config.cgi?VENDOR=TOSHIBA
固件版本 http://flashair/config.cgi?VERSION=F24A6W3AW1.00.03
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容

  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,241评论 0 13
  • 夜莺2517阅读 127,718评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 6,887评论 1 6
  • 我是一名过去式的高三狗,很可悲,在这三年里我没有恋爱,看着同龄的小伙伴们一对儿一对儿的,我的心不好受。怎么说呢,高...
    小娘纸阅读 3,387评论 4 7
  • 那一年,我选择了独立远行,火车带着我在前进的轨道上爬行了超过23个小时; 那一年,我走过泥泞的柏油路,在那个远离故...
    木芽阅读 1,634评论 4 5