Получение размера NSImage, выделенного с помощью NSData - PullRequest
0 голосов
/ 01 июня 2011
NSImage *testImages;
NSURL *testImageUrl = [NSURL URLWithString:@"file:///foo/testImage.png"];
NSData *imageData = [testImageUrl resourceDataUsingCache:NO];
testImages = [[NSImage alloc] initWithData:imageData ];

Как мне получить NSSize testImages.В отладчике я могу прочитать его из свойства _NSSize, но [testImages size] return (0,0)

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

Это сработало, но я не знаю почему?

NSArray *representation = [testImages representations];
NSImageRep *repOne = [representation objectAtIndex:0];
int width = [repOne pixelsWide];
return width;

Ответы [ 2 ]

0 голосов
/ 01 июня 2011

"... но [размер testImages] возвращает (0,0)"

Всегда учитывайте, возвратил ли в какой-то момент в вашем коде какой-либо метод или вызов nil там, где вы этого не ожидали. Затем вернитесь к коду и выясните, где ваш код (или ваши предположения) пошли не так.

NSURL *testImageUrl = [NSURL URLWithString:@"file:///foo/testImage.png"];
NSData *imageData = [testImageUrl resourceDataUsingCache:NO];
NSImage *testImages = [[NSImage alloc] initWithData:imageData ];
NSSize size = [testImages size];

Если по какой-либо причине вызов URLWithString: не удался, он вернет nil. Отправка сообщения -resourceDataUsingCache: на nil в основном приведет к nil (оно просто игнорируется). Попытка создать NSImage с передачей nil для параметра данных вернет nil. И отправка -size сообщения на nil в основном приведет к nil, что будет равно {0, 0}.

Итак, перепроверьте, чтобы убедиться, что ваши сообщения не просто отправлялись на ноль.

Еще одна заметка, но вы обычно используете +fileURLWithPath: при создании файлов NSURL s и +URLWithString: при создании URL-адресов других типов.

0 голосов
/ 01 июня 2011

В NSImage классе, у нас есть свойство, которое дает нам размер изображения в NSImage .

- (NSSize)size
   NSSize size = testImages.size;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...