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)
Другие вопросы по тегам