5

我在从 NSData 或 UIImage中查找图像类型中找到了以下代码,这有助于检查 UIimage 的四种不同图像类型

     (NSString *)contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];

    switch (c) {
    case 0xFF:
        return @"image/jpeg";
    case 0x89:
        return @"image/png";
    case 0x47:
        return @"image/gif";
    case 0x49:
    case 0x4D:
        return @"image/tiff";
    }
    return nil;
}

我想知道如何找到该文件是位图图像还是不具有 .bmp 扩展名。有人可以帮我吗。修改上面的代码以找到 bmp 或者请为我提供一些代码的解决方案。

提前感谢

4

2 回答 2

5

NSData您可以使用
UIImageJPEGRepresentation(<#UIImage *image#>, <#CGFloat compressionQuality#>)
OR
UIImagePNGRepresentation(<#UIImage *image#>)
方法将图像更改为。以这种方式调用它:

- (void) yourMethod{
    NSData *imageData = UIImagePNGRepresentation(yourImage);
    NSString *str = [self contentTypeForImageData:imageData];

}

- (NSString *)contentTypeForImageData:(NSData *)data {
    uint8_t c;
    [data getBytes:&c length:1];

    switch (c) {
        case 0xFF:
                return @"image/jpeg";
        case 0x89:
                return @"image/png";
        case 0x47:
                return @"image/gif";
        case 0x49:
            break;
        case 0x42:
            return @"image/bmp";
        case 0x4D:
            return @"image/tiff";
    }
    return nil;
}
于 2013-07-24T15:53:57.453 回答
1

根据维基百科,一个非 OS/2 BMP 文件以0x42 0x4D(ascii 中的 BM)开头。

case 0x42:
    return @"image/bmp";
于 2013-07-24T07:52:00.617 回答