判断是否为gif/png图片的正确姿势

1.在能取到图片后缀的前提下

1
2
3
4
5
6
7
8
9
//假设这是一个网络获取的URL
NSString *path = @"http://pic3.nipic.com/20090709/2893198_075124038_2.gif";
// 判断是否为gif
NSString *extensionName = path.pathExtension;
if ([extensionName.lowercaseString isEqualToString:@"gif"]) {
    //是gif图片
else {
    //不是gif图片
 }

2.不知道时.其实就是取出图片数据的第一个字节, 就可以判断出图片的真实类型那该怎么做呢如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//通过图片Data数据第一个字节 来获取图片扩展名
- (NSString *)contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];
    switch (c) {
        case 0xFF:
            return @"jpeg";
        case 0x89:
            return @"png";
        case 0x47:
            return @"gif";
        case 0x49:
        case 0x4D:
            return @"tiff";
        case 0x52:
            if ([data length] < 12) {
                return nil;
            }
            NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
            if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
                return @"webp";
            }
            return nil;
    }
    return nil;
}

其实图片数据的第一个字节是固定的,一种类型的图片第一个字节就是它的标识, 我们来调用一下这个方法:

1
2
3
4
5
6
7
//假设这是一个网络获取的URL
NSString *path = @"http://pic.rpgsky.net/images/2016/07/26/3508cde5f0d29243c7d2ecbd6b9a30f1.png";
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:path]];
//调用获取图片扩展名
NSString *string = [self contentTypeForImageData:data];
//输出结果为 png
NSLog(@"%@",string);

转载于:https://www.cnblogs.com/shifu/p/5794575.html

判断是否为gif/png图片的正确姿势相关推荐

  1. 论Java selenium 上传文件,图片的正确姿势

    参考一 [转载自YunMan](https://www.cnblogs.com/yunman/p/7112882.html?utm_source=itdadao&utm_medium=refe ...

  2. Delphi判断一个文件是不是JPG图片

    Delphi判断一个文件是不是JPG图片文件 function IsJpegFile(FileName: string): Boolean; const RightBuf : array[0..3] ...

  3. python如何导入图片imread_OpenCV 使用imread()函数读取图片的六种正确姿势

    经常看到有人在网上询问关于imread()函数读取图片失败的问题.今天心血来潮,经过实验,总结出imread()调用的四种正确姿势. 通常我要获取一张图片的绝对路径是这样做的:在图片上右键--属性-- ...

  4. imagesLoaded-检测图片是否正确加载的js插件

    简要教程 imagesLoaded是一款用于检测页面中的图片是否被加载的js插件.imagesLoaded是非常有用的插件,当你的页面中某幅图片没有被加载时,默认会显示一个红叉或图片alt文本,ima ...

  5. java判断文件夹中的图片是否重复

    java判断文件夹中的图片是否重复 直接上代码 package com.example.common; import java.io.File; import java.io.FileInputStr ...

  6. OpenCV实践之路——使用imread()函数读取图片的六种正确姿势

    本文由@星沉阁冰不语出品,转载请注明作者和出处. 文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/51375078 微博:http ...

  7. HTML 网页图片地址正确但不显示

    (1)html 网页图片地址正确但不显示的问题 https://blog.csdn.net/qq_34089503/article/details/85226002

  8. vue动图加载图片不能正确显示的解决方法

    vue动图加载图片不能正确显示的解决方法 解决核心 代码 运行结果 上次解决过一次,没有记录,后来发现有小伙伴问我这个问题,我今天就顺手记录一下,具体的原因我这里就不详细说, 加载不出来简略的原因是v ...

  9. python imread函数_OpenCV 使用imread()函数读取图片的六种正确姿势

    经常看到有人在网上询问关于imread()函数读取图片失败的问题.今天心血来潮,经过实验,总结出imread()调用的四种正确姿势. 通常我要获取一张图片的绝对路径是这样做的:在图片上右键--属性-- ...

最新文章

  1. 收藏!机器学习算法分类图谱及其优缺点综合分析
  2. koa2 mysql增删改查_react+koa2+mysql零门槛的全栈体验,附上完整项目分享
  3. 付费依赖专家有没有用?
  4. 已经了关联到svn的文件类型,如何添加到 ignore
  5. @Value 注入静态变量
  6. 带着问题了解Openstack Neutron安全组
  7. 修复 github 项目的语言属性
  8. 网络学习(六)Windows XP系统之ghost安装
  9. access数据库密码破解
  10. 点云深度学习:多一维看世界【VALSE Webinar】Panel实录
  11. 中兴微ZXIC方案MF782型4G随身WIFI开启ADB,开启锁频等功能
  12. 闲话虚拟仪器开发历史
  13. 3d打印光固化好还是热固化好_生物3D打印进展综述:从打印方法到生物医学应用...
  14. 脚本调试sh -x xx.sh、set -x
  15. 计算机拆机步骤图解,华硕x50拆机步骤图解【图文】
  16. 腾讯天美测开一面面经
  17. 【BZOJ4552】【TJOI2016HEOI2016】排序(线段树、二分)
  18. web 多屏互动显示方案
  19. vue里实现页面录音功能
  20. springboot审核功能怎么做_开发的微信小程序商城怎么利用分销功能做营销

热门文章

  1. 【计蒜客 - 蓝桥训练】修建公路(贪心,或运算,dp)
  2. 【POJ-3259】 Wormholes(判负环,spfa算法)
  3. (1).数据结构概述
  4. php 分页 url重写 分页问题,解决千古难题,wordpress分页URL问题,wordpress给分页加链接...
  5. C语言第六次作业指针,c语言第六次作业解析
  6. Linux学习:第五章-Linux用户和用户组管理
  7. 学姐百度实习面经(轻松拿offer)
  8. 《关于我的那些面经》滴滴Java岗(附答案)
  9. python基础技巧总结(二)
  10. C++基础学习(02)--(数据类型,变量类型,变量作用域,常量,修饰符类型)