我在我的应用程序中使用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)
答案 0 :(得分:0)
这是我的解决方案:使用真实的图像尺寸,而不是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)