NSImage - не удается загрузить изображение из файла

Я программирую приложение командной строки, которое будет загружать изображение из вспомогательных файлов. Изображение копируется во вспомогательные файлы, но когда я использую следующий код, переменная imgC возвращает nil.

NSString* pathC = @"galaxy.jpg";
NSImage* imgC = [NSImage imageNamed: pathC];

ImgC возвращает ноль, даже если я использую следующий код:

NSString* pathC = @"galaxy.jpg";
NSImage* imgC = [[NSImage alloc] initWithContentsOfFile: pathC];

Кто-нибудь может мне помочь?

(PS: извините за мой плохой английский.)

Большое спасибо, Питер


person jrck    schedule 24.03.2014    source источник
comment
Вы уверены, что изображение копируется в ваш пакет?   -  person CodaFi    schedule 24.03.2014
comment
да. Я вижу изображение во вспомогательных файлах в Xcode, а также в папке проекта в Finder.   -  person jrck    schedule 24.03.2014
comment
Метод imageNamed: работает только в пакете приложений, его нельзя использовать из инструмента командной строки. И initWithContentsOfFile: следует использовать с абсолютным путем, а не с относительным путем. Кроме того... вы должны использовать URL-адреса, а не пути.   -  person Abhi Beckert    schedule 24.03.2014


Ответы (2)


Поскольку целью является commend line tool, поскольку у них нет пакета [NSBundle mainBundle], он возвращает nil. Так что вам нужно использовать absolute path, а не relative path. Поскольку это Странно Xcode, не делайте никаких предупреждений об этом.

NSImage *image = [[NSImage alloc]initWithContentsOfFile:@"/Users/Zenga/Documents/iOS/Research/Test/star.png"];
if (image == nil) {
    NSLog(@"image nil");
}
NSLog(@"%f and %f",image.size.width, image.size.height);

и я нашел этот путь из Когда я нажимаю на изображение и в правом углу, я нашел этот путь, и я использовал его, и он отлично работает для меня.

введите здесь описание изображения

person Buntylm    schedule 24.03.2014
comment
@Sporky Да, но это странно, поскольку Xcode не показывает никаких предупреждений - person Buntylm; 24.03.2014

Быстрый стиль:

if let imageRef = NSImage(byReferencingFile: "/path/to/galaxy.jpg")
{
    println("image size \(imageRef.size.width):\(imageRef.size.height)")
}
person Peter Kreinz    schedule 13.09.2015