iOS 判斷是否是gif

1.給NSString建一個分類
.h文件

/**
 判斷該字符串是不是一個有效的URL
 
 @return YES:是一個有效的URL or NO
 */
- (BOOL)isValidUrl;

/** 根據(jù)圖片名 判斷是否是gif圖 */
- (BOOL)isGifImage;

/** 根據(jù)圖片data 判斷是否是gif圖 */
+ (BOOL)isGifWithImageData: (NSData *)data;

/**
 根據(jù)image的data 判斷圖片類型
 
 @param data 圖片data
 @return 圖片類型(png、jpg...)
 */
+ (NSString *)contentTypeWithImageData: (NSData *)data;

.m文件

- (BOOL)isValidUrl {
    NSString *regex =@"[a-zA-z]+://[^\\s]*";
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [urlTest evaluateWithObject:self];
}

- (BOOL)isGifImage {
    
    NSString *ext = self.pathExtension.lowercaseString;
    
    if ([ext isEqualToString:@"gif"]) {
        return YES;
    }
    return NO;
}

+ (BOOL)isGifWithImageData: (NSData *)data {
    if ([[self contentTypeWithImageData:data] isEqualToString:@"gif"]) {
        return YES;
    }
    return NO;
}

+ (NSString *)contentTypeWithImageData: (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;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應用程序都或多或少會牽扯到網(wǎng)絡(luò)開發(fā),例如說新浪微博、微信等,這些應用本身可...
    lichengjin閱讀 4,039評論 2 7
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,622評論 30 472
  • 1.項目經(jīng)驗 2.基礎(chǔ)問題 3.指南認識 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎(chǔ) 2.CocoaTouch...
    扶光啟玄閱讀 5,204評論 0 13
  • AD BEAUTY / 半永久定妝 ?氧氣眉?美瞳線 好的眉毛只能保持2?3年,油性皮膚的也只能是1?2年,...
    AD紫色櫻花閱讀 145評論 0 0
  • 沒有了星星,月亮怎能擺脫凄 楚?沒有了綠葉,花朵怎能 頻頻綻開笑靨?沒有了風花? 雪月怎能獨自存在?沒有了高山,流...
    蝴蝶情結(jié)閱讀 267評論 1 1

友情鏈接更多精彩內(nèi)容