首页 > 解决方案 > 使用 alpha 通道管理 UIImage 的质量和大小

问题描述

我有一个带有 UIImageViews 和 UILabels 的 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%,但它甚至会导致最大尺寸。

标签: iosobjective-cuiimageuigraphicscontext

解决方案


推荐阅读