ios判断文件或图片的类型

可以通过二进制的前2位的ascii码来进行判断。如下:

// 255216 jpg;

// 7173 gif;

// 6677 bmp,

// 13780 png;

// 6787 swf

// 7790 exe dll,

// 8297 rar

// 8075 zip

// 55122 7z

// 6063 xml

// 6033 html

// 239187 aspx

// 117115 cs

// 119105 js

// 102100 txt

// 255254 sql

比如在下载东西的时候,从服务器发送过来的是二进制data数据,需要根据二进制判断是什么类型的文件,从而进行文件保存工作.在ios中用OC代码实现如下

- (void)viewDidLoad {

[super viewDidLoad];

NSString *path = [[NSBundle mainBundle] pathForResource:@"mm"ofType:@"jpg"];

NSData *data = [NSData dataWithContentsOfFile:path];

if (data.length<2) {

return NSLog(@"NOT FILE");

}

int char1 = 0 ,char2 =0 ; //必须这样初始化

[data getBytes:&char1 range:NSMakeRange(0, 1)];

[data getBytes:&char2 range:NSMakeRange(1, 1)];

NSLog(@"%d%d",char1,char2);

NSString *numStr = [NSString stringWithFormat:@"%i%i",char1,char2];

NSLog(@"%@",numStr);

}

输出的是:255216,正好对应的是jpg.其他的也一样.

如果只判断图片的格式,可以取图片的第一个字节,对应的如下

0xFF : jpg

0x89:png

0x47:gif

0x4D:tiff

代码:

- (void)viewDidLoad {

[super viewDidLoad];

NSString *path = [[NSBundle mainBundle] pathForResource:@"mm"ofType:@"jpg"];

NSData *data = [NSData dataWithContentsOfFile:path];

uint8_t c;

//    [data getBytes:&c length:1];

[data getBytes:&c range:NSMakeRange(0, 1)];

switch (c) {

case 0xFF:

return NSLog(@"jpg");

break;

case 0x89:

return NSLog(@"png");

break;

case 0x47:

return NSLog(@"gif");

break;

case 0x4D:

return NSLog(@"tiff");

break;

default:

break;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 8,187评论 0 7
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,166评论 2 7
  • 1、改变 UITextField 占位文字 颜色和去掉底部白框 [_userName setValue:[UICo...
    i_MT阅读 4,687评论 0 2
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666阅读 5,309评论 0 6
  • 朋友说我天真,找个男朋友87年的,快30岁却没有能力买房,没有房子却想着结婚。其实自己想想有点心酸,可是这也是自己...
    sheepyaya阅读 1,046评论 0 0