在我们的应用中,我们正在创建PDF NSImage
(因此可扩展),然后使用CGImage
例程将该数据写入TIFF文件。这在非视网膜显示Macintoshes上工作正常,但在视网膜机器上,返回的数据是我们期望的分辨率的两倍(就像屏幕一样)。
我们正在使用的代码工作采用新形成的NSView
子类,引用要绘制的数据(不是原始的屏幕视图)作为printingMapView。
NSData *pdfData = [printingMapView dataWithPDFInsideRect: frame];
NSImage *image = [[NSImage alloc] initWithData: pdfData];
[image setSize: size];
NSRect pRect = NSMakeRect( 0, 0, [image size].width, [image size].height);
CGImageRef cgImage = [image CGImageForProposedRect: &pRect context: NULL hints:NULL];
我已经四处寻找可以提交给CGImageForProposedRect:context:hints
电话的任何提示,但Apple文档中没有任何关于内容规模的内容。
除了创建完整尺寸的NSBitmapImageRep
并将其作为context
参数传递给CGImageForProposedRect:context:hints
之外,有没有办法做到这一点?
这似乎在操作过程中可能会占用大量内存。
答案 0 :(得分:1)
因此CGImageForProposedRect会返回1:1像素数据,如果你从大小加倍的函数中获取CGImage,那么NSImage的NSImageRep的大小也必须加倍。检查您的代码,看看您是否有任何对NSImage drawInRect的调用,您正在写入视网膜上下文。这就是发生在我身上的事情。