Неверный размер изображения - PullRequest
1 голос
/ 18 сентября 2010

Я думаю, что мне здесь не хватает чего-то действительно базового.Если я делаю это с допустимым URL-адресом / путем, который, как мне известно, существует:

NSImage* img = [[NSImage alloc] initWithContentsOfFile:[[selectedItem url] path]];
NSLog(@"Image width: %d height: %d", [img size].width, [img size].height);

, то я получаю сообщение на консоль, что ширина равна -2080177216, а высота 0. Хотя я знаю, что ширина на самом деле50 и высота 50. Я попытался вызвать isValid, и он возвращает YES, и я также попытался проверить размер первого представления, и он возвратил те же испорченные значения.Почему изображение загружается неправильно?

Ответы [ 3 ]

9 голосов
/ 18 сентября 2010

Метод size возвращает NSSize, структуру, члены которой width и height имеют тип float.Вы относитесь к ним как к int.Используйте %f и все должно быть в порядке.

3 голосов
/ 18 сентября 2010

Помогает ли это?

setSize:

Устанавливает ширину и высоту изображения.

- (void)setSize:(NSSize)aSize

Обсуждение:

Размер объекта NSImage должен быть установлен, прежде чем его можно будет использовать. Если размер изображения еще не был установлен при добавлении представления изображения, размер берется из данных представления изображения. Для изображений EPS размер берется из ограничительной рамки изображения. Для изображений TIFF размер берется из атрибутов ImageLength и ImageWidth.

Изменение размера NSImage после его использования эффективно изменяет размер изображения. Изменение размера делает недействительными все его кэши и освобождает их. Когда в следующий раз изображение будет скомпоновано, выбранное представление будет отображаться в закадровом окне, чтобы воссоздать кэш.

Наличие Доступный в Mac OS X v10.0 и позже. Смотрите также

1 голос
/ 27 июня 2012

См. Размер NSImage не является реальным размером с некоторыми изображениями?

Вам необходимо выполнить итерацию по NSImageRep и установить размер от наибольшего найденного.

...