我有一个非常简单的
这里是两个不同输出的示例 - 左侧是我的代码生成的内容,右侧是正常的iOS截图: 由于我正在尝试将
那么,如何让
UIView
,其中包含几个黑白UIImageView
。如果我通过设备上的物理按钮截屏,生成的图像看起来与我所见完全相同(如预期一样)-如果我在像素级别检查图像,它只是黑白的。然而,如果我使用以下代码片段以编程方式执行相同的操作,则生成的图像似乎应用了反锯齿 - 所有黑色像素都被淡灰色的光环包围。我的原始场景中没有灰色 - 它是纯黑白的,"截屏"图像的尺寸与我以编程方式生成的图像相同,但我似乎无法弄清楚灰色光环来自何处。UIView *printView = fullView;
UIGraphicsBeginImageContextWithOptions(printView.bounds.size, NO, 0.0);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[printView.layer renderInContext:ctx];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
UIGraphicsEndImageContext();
我已经尝试在调用 renderInContext
之前添加以下内容,以尝试防止抗锯齿,但没有明显的效果:
CGContextSetShouldAntialias(ctx, NO);
CGContextSetAllowsAntialiasing(ctx, NO);
CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh);
这里是两个不同输出的示例 - 左侧是我的代码生成的内容,右侧是正常的iOS截图: 由于我正在尝试将
renderInContext
的输出发送到单色打印机,因此灰色像素会导致一些丑陋的伪影,这是由于打印机的抖动算法造成的。那么,如何让
renderInContext
产生与真实设备截图相同的像素级输出 - 即与我的原始场景中的黑白颜色相同?