NSImage не работает со всеми изображениями
Я загружаю изображения, используя класс NSImage в моем приложении, вот так.
if let image = NSImage(contentsOfURL: openPanel.URL!) {
...
}
Он отлично работает с большинством изображений. Затем я конвертирую его в CGImage и использую как хочу. Но с некоторыми изображениями это просто глюки, и я не могу понять, почему. Например, если я загружаю размер изображения 2133x2133
, похоже, ничего, и если я печатаю image.size
Я вижу очень странно (511.92, 511.92)
,
Что может вызвать такой тип поведения? Все изображения в формате PNG. В то же время я могу загрузить изображение с размером (2048.0, 1536.0)
и все работает просто отлично.
Как начать отладку загрузки с NSImage?
Это пример изображения:
http://rgho.st/6CVKMR2ZM/image.png
Когда я создаю CGImage из этого с помощью этой функции, я ничего не вижу:
var imageRect = CGRectMake(0, 0, newImage.size.width, newImage.size.height)
let imageRef = newImage.CGImageForProposedRect(&imageRect, context: nil, hints: nil)
1 ответ
Вот мое решение: используйте реальный размер изображения, а не тот, который Apple рассчитывает для меня, используя DPI.
var w = 0
var h = 0
for r in newImage.representations {
w = max(w, r.pixelsWide)
h = max(h, r.pixelsHigh)
}
var imageRect = CGRectMake(0, 0, CGFloat(w), CGFloat(h))
let imageRef = newImage.CGImageForProposedRect(&imageRect, context: nil, hints: nil)