2016-05-21 4 views
0

Je charge des images en utilisant la classe NSImage dans mon application comme ça.NSImage ne fonctionne pas avec toutes les images

if let image = NSImage(contentsOfURL: openPanel.URL!) { 
    ... 
} 

Fonctionne très bien avec la plupart des images. Je le convertis ensuite en CGImage et l'utilise comme je le veux. Mais avec quelques images, il ne fait que pépins et je ne comprends pas pourquoi. Par exemple, si je charge la taille de l'image 2133x2133, il apparaît comme rien et si j'imprime image.size je vois très étrange (511.92, 511.92).

Qu'est-ce qui peut provoquer ce type de comportement? Toutes les images sont au format PNG. Dans le même temps, je peux charger l'image avec la taille (2048.0, 1536.0) et tout fonctionne très bien.

Comment débuter le débogage du chargement avec NSImage?

Voici l'exemple d'une image:

http://rgho.st/6CVKMR2ZM/image.png

Lorsque je crée CGImage de qu'utiliser cette Func, je ne vois rien:

var imageRect = CGRectMake(0, 0, newImage.size.width, newImage.size.height) 
    let imageRef = newImage.CGImageForProposedRect(&imageRect, context: nil, hints: nil) 
+0

Il serait utile si vous nous avez donné un exemple de fichier image qui ne fonctionne pas. –

+3

Ce n'est pas étrange, c'est une image 2133x2133 qui a un paramètre d'image DPI de 300 pixels/pouce. (2133/300 = 7,11 pouces * 72 pts/pouce = 511,92 pts.) ;-). Un exemple d'image serait utile. La consignation de l'instance d'image entière peut généralement fournir une mine d'informations, notamment le type et le nombre de répétitions d'image que contient NSImage. (Un 'NSImage' est simplement un conteneur pour un ou plusieurs' NSImageRep's.) – NSGod

+1

@NSGod: désolé d'être un peu pédant: Un 'NSImage' est simplement un conteneur pour ** Zero ** ou plus' NSImageRep' s –

Répondre

0

Voici ma solution: utiliser l'image réelle taille, pas celui que Apple calcule pour moi en utilisant DPI.