2015-09-14 43 views
0

我想保存视图,其子视图,但保存的图像有点模糊(尤其是标签的文本)如何使用子视图保存UIView而不会丢失质量?

我试着在计算器给出的所有解决方案 - 没有用。

任何人都可以帮助我一样吗?

我使用下面的代码

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0);   
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];   
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();   
    UIGraphicsEndImageContext(); 

enter image description here

而且越来越模糊的文字,也图像质量较低。

+1

你好巴拉,如果你与我们分享你迄今为止尝试过的,那么找到解决问题的办法会更容易。你尝试过哪些解决方案?你是否在快照视图?很快,向我们展示代码。 – EDUsta

回答

0

您可以尝试更高分辨率的图像。如果将高分辨率图像压缩为向下,应该没问题,但将低分辨率图像放大到较大尺寸通常会使图像内容变模糊,因为它会拉伸所有内容。

+0

我有UILabel及其文本。我将整个屏幕保存为图像,结果图像显示低质量模糊文本(我现在用更多信息修改了我的问题)。 – Bala

0

首选的方法是[UIView snapshotViewAfterScreenUpdates:]。如果您打算应用其他效果,则只应使用drawViewHierarchyInRect:afterScreenUpdates:

也就是说,有几种可能的原因,这取决于你如何操作或保存图像。例如,以JPEG格式保存文本会导致模糊。旋转或缩放图像时不加小心可使文字模糊不清。不正确地绘制图像(例如,未能像素对齐)会使文本模糊。如果您正在进行多个步骤,则应该简化您的问题,并在每个步骤验证质量。要在StackOverflow上进一步讨论它,您需要提供有关如何操纵和显示图像的详细信息,而不仅仅是如何生成图像。

文字极易受文物影响。如果您必须拍摄照片(如果可能的话通常应该避免的),您应该确保尽可能少地操作它。在绘制文本之前而不是之后操作文本总是更好。

+0

谢谢纳皮尔,我有一个容器视图。容器视图在图像视图的顶部具有一个图像视图(其大小是父容器视图的大小),其中有一个垂直旋转的UILabel。所以,我可以改变标签的图片和文字。现在我想保存图片以及我更改的文字。如果我使用上面的代码,我可以看到低质量的图像和模糊的文本。 – Bala

+0

您是否尝试过首选的snapshotView API?这是它的用途。你没有解释我问过的其他任何事情,特别是在你快照之后你对图像做了什么。你是否操纵它?你如何看待它?产生的图像是否是屏幕尺寸的2倍(因为它是视网膜?)一般来说,编号只需要通过手动将图像和文本拖入所需大小的图像上下文而不是使用绘制视图的快照来解决此问题。 –

+0

快照后,我将它保存到照片库中,而不做任何事情。这是我用来保存图像的代码ALAssetsLibrary * library = [[ALAssetsLibrary alloc] init]; [activityIndi​​cator startAnimating]; [activityIndi​​cator stopAnimating];这个函数是一个函数,用来指定一个函数的名字。 – Bala

相关问题