iOS:Coregraphics图像质量差

时间:2013-07-23 17:34:18

标签: ios uiview uiimage core-graphics uigraphicscontext

我不确定是否可以提高图像质量,但是代码在PDF中显示非常差的图像质量。我知道它的标准代码可以从视图中生成图像,但是我可以做些什么来指定图像质量或改进它?

- (void)renderView:(UIView*)view {
    UIGraphicsBeginImageContext(view.frame.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewAsImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [viewAsImage drawInRect:rect];
}

2 个答案:

答案 0 :(得分:7)

您可能需要创建一个比例为2(视网膜)而不是默认值1的图形上下文。为此,请使用UIGraphicsBeginImageContextWithOptions(view.frame.size, YES, 0.0);。这将创建一个带有不透明目标的图像上下文(如果要渲染透明图像,则可以将第二个参数设置为NO)并使用设备主屏幕的比例因子。

答案 1 :(得分:0)

加倍大小!

- (void)renderView:(UIView*)view {
    CGSize newSize = view.frame.size;
    newSize.width = newSize.width * [UIScreen mainScreen].nativeScale;
    newSize.height = newSize.height * [UIScreen mainScreen].nativeScale;

    UIGraphicsBeginImageContext(newSize);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewAsImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [viewAsImage drawInRect:rect];
}