在双显示器设置上将NSImage转换为CGImageRef

时间:2016-06-15 19:16:03

标签: objective-c cocoa core-graphics nsimage cgimageref

因此,我们有一个根据用户输入裁剪和调整大小的NSimage。它在视网膜和非视网膜Mac上都能正常工作。

问题是,当我将非视网膜屏幕连接到我的视网膜macbook时,它开始使图像的大小加倍。

仅在第二个非视网膜屏幕上启动应用程序时才会出现此问题。

调试时,我注意到此时图像翻倍:

CGImageSourceRef finalSource = CGImageSourceCreateWithData((__bridge CFDataRef)([newImage TIFFRepresentation]), NULL);
CGImageRef finalRef =  CGImageSourceCreateImageAtIndex(finalSource, 0, NULL);

在我的测试中,newImage.size是800x600,但是(int)CGImageGetWidth(finalRef)返回1600.

我也尝试过:

CGImageRef cgImage = [newImage CGImageForProposedRect:&imageRect context:[NSGraphicsContext currentContext] hints:nil];

但仍然有相同的结果。

有什么想法吗?

0 个答案:

没有答案