我正在合并两张图片然后我通过应用此代码截取屏幕截图:
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);
问题在于,当最终图像失去其质量时,它会模糊。
答案 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)
您是否提供了视网膜显示的图像?你应该检查一下。您可能正在模拟器中运行(在视网膜中)。