ios - 使用 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%,但它甚至会导致最大尺寸。
解决方案
推荐阅读
- vba - 解锁文件夹/驱动器 - 当被 VBA 锁定时
- php - 在 PHP 5 和 PHP 7 中从 preg_replace 到 preg_replace_callback 的转换
- java - 如何使用字符串生成器
- logstash - 如何将logstash中的日期与不同的空格匹配
- sql-server - 带日期(周)的 SQL 查询动态数据透视
- google-apps-script - 很抱歉,从存储读取时发生服务器错误。错误代码未经身份验证
- php - 将用户重定向到他们登录后离开的页面
- python - 即使安装了所有必需的软件包,Matplotlib 也没有安装
- python - 如何修复 PyCharm 在 Python 3.8 上给我的这个错误
- regex - 正则表达式匹配一个或两个,但不是两次