5

NSData または UIImage からのイメージ タイプの検索で以下のコードを見つけました。これは、UIimage の 4 つの異なるイメージ タイプをチェックするのに役立ちます。

     (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

OR 方式で画像を変更できますNSData。次のように呼び出します。
UIImageJPEGRepresentation(<#UIImage *image#>, <#CGFloat compressionQuality#>)

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(BM in ascii) で始まります。

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