UILabel重新调整和栅格化时的图像质量问题

时间:2013-09-16 15:20:12

标签: iphone ios image uilabel scale

UILabel对象存储为图像时,我在重新定位UILabel对象的内容方面存在一些问题。由于渲染图像必须大于原始imageScale,因此我计算了重新缩放原始图像并将其保存到CGSize变量所需的比例[labelImage drawInRect:CGRectMake(xCoordinate/imageScale.width, yCoordinate/imageScale.height, newSize.width, newSize.height) blendMode:kCGBlendModeNormal alpha:0.8]; 。在下文中,我将解释采用的(和失败的)方法。

用于渲染图片的代码

以下代码用于在画布上渲染提取的图像。

newSize

其中变量newSize.width = originalWidth/imageScale.width的计算方法如下:

  • newSize.height = originalHeight/imageScale.height;
  • UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); [[label layer] renderInContext: UIGraphicsGetCurrentContext()]; UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();

方法1

我使用以下代码提取标签:

label

其中UILabelnewSize变量,而UIGraphicsBeginImageContextWithOptions([label bounds].size, NO, 0.0); [[label layer] renderInContext: UIGraphicsGetCurrentContext()]; UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 是重新缩放图片应具有的尺寸(详见上文)。

但是,我获得了下面的图片,这显然是失败的,因为内容很少而且没有居中:

enter image description here

方法2

我使用以下代码提取标签:

{{1}}

但是,由于我使用原始图像尺寸来提取图像,因此我获得的效果如下:

enter image description here

您可以注意到,气球中的文字分辨率不高,因此无法正确显示。

问题

如何纠正两种方法中的一种,以便以高分辨率显示图像?

1 个答案:

答案 0 :(得分:0)

好像你只需要为生成的图像设置适当的比例。

这是功能:

void UIGraphicsBeginImageContextWithOptions(
    CGSize size,
    BOOL opaque,
    CGFloat scale
);

您将比例设为0.0。尝试将其替换为[UIScreen mainScreen].scale