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();
其中label
是UILabel
变量,并且newSize
是重新缩放的图像应具有的大小(有关详细信息,请参见上文)。
但是,我获得了以下图像,这显然是失败的,因为内容很少且不居中:
方法二
我使用以下代码提取了标签:
UIGraphicsBeginImageContextWithOptions([label bounds].size, NO, 0.0);
[[label layer] renderInContext: UIGraphicsGetCurrentContext()];
UIImage *snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
但是,由于我使用原始图像大小来提取图像,所以我获得的效果如下:
如您所见,气球中的文本分辨率不高,因此无法正确显示。
问题
如何纠正这两种方法中的一种以便以高分辨率可视化图像?