使用Alpha通道管理UIImage的质量和大小

时间:2019-05-30 10:48:19

标签: ios objective-c uiimage uigraphicscontext

我有一个带有UIImageViews和UILabel的UIView,必须将其捕获到图像中,然后导出到照片库。图片具有固定的像素大小,并且必须具有Alpha通道,因为UIView背景颜色很清晰。

现在,我将UIGraphicsBeginImageContextWithOptions与renderInContext或drawViewHierarchyInRect一起使用,然后将图像调整为给定大小并使用UIImagePNGRepresentation保存。它可以正常工作-我将需要的确切像素大小的UIImage(带有Alpha通道)保存在图库中。

    UIGraphicsBeginImageContextWithOptions(_templateView.bounds.size, NO, 0.0);
    [_templateView drawViewHierarchyInRect:_templateView.bounds afterScreenUpdates:NO];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsBeginImageContext(CGSizeMake(1080.0f, 1080.0f));
    [img drawInRect:CGRectMake(0, 0, 1080.0f, 1080.0f)];
    img = UIGraphicsGetImageFromCurrentImageContext();
    NSData *pngImageData = UIImagePNGRepresentation(img);

问题是结果图像的大小。这比预期的要大。当我仅添加一个带有1.2Mb图像的UIImageView(填充父UIView)时。它的捕获结果为1.65Mb。这很关键,因为我对图像有限制。如何缩小尺寸?是否可以通过Alpha通道降低此类图像的质量?

我尝试将其尺寸调整为50%,然后再次调整为100%,但即使是最大尺寸,其结果也是如此。

0 个答案:

没有答案