我在 Mac 项目中有两个 PNG。正常和@2x。Xcode 将这些组合成一个 TIFF,@2x 位于索引 0,@1x 位于索引 1。
对于当前显示比例,获得适当图像作为 CGImageRef 版本(与 Quartz 一起使用)的建议方法是什么?
我可以通过 CGImageSource 手动获取图像:
NSBundle *mainBundle = [NSBundle mainBundle];
NSURL *URL = [mainBundle URLForResource:@"Canvas-Bkgd-Tile" withExtension:@"tiff"];
CGImageSourceRef source = CGImageSourceCreateWithURL((__bridge CFURLRef)(URL), NULL);
_patternImage = CGImageSourceCreateImageAtIndex(source, 1, NULL); // index 1 is @1x, index 0 is @2x
CFRelease(source);
我也发现这是可行的,但我不确定这是否会在 Retina 显示器上返回 Retina 版本:
NSImage *patternImage = [NSImage imageNamed:@"Canvas-Bkgd-Tile.tiff"];
_patternImage = [patternImage CGImageForProposedRect:NULL context:nil hints:nil];
CGImageRetain(_patternImage); // retain image, because NSImage goes away
这个问题的一个可接受的答案或者提供了一个解决方案,如何从组合的多分辨率 TIFF 中获得合适的 CGImage,或者解释为什么这里的第二种方法有效。或者需要进行哪些更改。