2013-05-23 5 views
0

Я хочу, чтобы получить размер изображения без загрузки его так, я использую следующий кодCGImageSourceRef ImageSource = CGImageSourceCreateWithURL возвращает NULL

-(float)gettingimagedimensions:(NSString*)url{ 
    NSURL *imageFileURL = [NSURL fileURLWithPath:url]; 
    //CGImageSourceRef imageSource = CGImageSourceCreateWithURL(imageFileURL, NULL); 
    CGImageSourceRef imageSource = CGImageSourceCreateWithURL((__bridge CFURLRef)imageFileURL, NULL); 
    if (imageSource == NULL) { 
     // Error loading image 

     return 0; 
    } 

    CGFloat width = 0.0f, height = 0.0f; 
    CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL); 
    if (imageProperties != NULL) { 
     CFNumberRef widthNum = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth); 
     if (widthNum != NULL) { 
      CFNumberGetValue(widthNum, kCFNumberFloatType, &width); 
     } 

     CFNumberRef heightNum = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight); 
     if (heightNum != NULL) { 
      CFNumberGetValue(heightNum, kCFNumberFloatType, &height); 
     } 

     CFRelease(imageProperties); 
    } 

    NSLog(@"Image dimensions: %.0f x %.0f px", width, height); 

    return height; 
} 

Проблема заключается в том, что ImageSource всегда NULL ли какой-либо орган имеет какие-либо идеи , почему он не работает!

Пожалуйста, обратите внимание, что URL являются Допустимы ссылки на изображения JPG или PNG

+0

если у вас есть ответ на этот вопрос, тогда, пожалуйста, дайте мне знать. Я столкнулся с такой же проблемой. –

ответ

1

ли вы включили ARC? Я не и мой рабочий код выглядит следующим образом:

NSURL * imageFileURL = [NSURL fileURLWithPath:fp]; 
CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)imageFileURL, NULL); 

Обратите внимание на отсутствие __bridge. Я звоню CFRelease на imageSource, когда закончил кстати.