UIImage截图失去了它的质量

时间:2012-06-13 16:48:34

标签: iphone objective-c ios xcode uiimage

我正在合并两张图片然后我通过应用此代码截取屏幕截图:

UIGraphicsBeginImageContext(size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
img_AddText=viewImage;

[dragView removeFromSuperview];
imgV_SelectedImg.image=nil;
imgV_SelectedImg.image=img_AddText;
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

问题在于,当最终图像失去其质量时,它会模糊。

5 个答案:

答案 0 :(得分:9)

尝试使用UIGraphicsBeginImageContext的withOptions版本

UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);

答案 1 :(得分:2)

我获得了高质量和特定屏幕位置的快照。通过这段代码。

-(UIImage *)takeScreenShot
{
    CGRect grabRect;
    grabRect = CGRectMake(0,70,320,260);
    UIGraphicsBeginImageContextWithOptions(grabRect.size, self.view.opaque, 0.0);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(ctx, -grabRect.origin.x, -grabRect.origin.y);
    [self.view.layer renderInContext:ctx];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return viewImage;
}

它给了我很好的快照..

答案 2 :(得分:1)

我在UIImage课程上创建了一个可以帮助你的类别。它是这样的:

+ (UIImage*)imageWithView:(UIView *)view opaque:(BOOL)opaque bgColor:(UIColor*)bgColor{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, opaque, [[UIScreen mainScreen] scale]);

    if(!opaque){
        [bgColor set];
    }
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

对我来说很好。没有检测到模糊。尝试使用它。如果您仍然拥有它,则很可能问题出在您的保存代码中......

干杯...... :)

答案 3 :(得分:1)

UIGraphicsBeginImageContextWithOptions(size,NO,2.0); 这通过将规模从1.0增加到2.0来解决我的问题

答案 4 :(得分:0)

您是否提供了视网膜显示的图像?你应该检查一下。您可能正在模拟器中运行(在视网膜中)。