UIImage 的高质量缩放

2023-12-12

我需要缩放来自 iPhone 应用程序中视图层的图像的分辨率。显而易见的方法是在 UIGraphicsBeginImageContextWithOptions 中指定比例因子,但只要比例因子不是 1.0,图像质量就会受到影响——远远超出像素损失的预期。

我尝试过其他几种缩放技术,但它们似乎都围绕 CGContext 的东西,并且似乎都做同样的事情。

仅仅改变图像“大小”(不改变点分辨率)是不够的,主要是因为该信息似乎很快就被管道中的其他人丢弃(图像将转换为 JPG 并通过电子邮件发送)。

iPhone 上还有其他缩放图像的方法吗?


快速扩展:

extension UIImage{

        // returns a scaled version of the image
        func imageScaledToSize(size : CGSize, isOpaque : Bool) -> UIImage{

            // begin a context of the desired size
            UIGraphicsBeginImageContextWithOptions(size, isOpaque, 0.0)

            // draw image in the rect with zero origin and size of the context
            let imageRect = CGRect(origin: CGPointZero, size: size)
            self.drawInRect(imageRect)

            // get the scaled image, close the context and return the image
            let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()

            return scaledImage
       }
}

Example:

aUIImageView.image = aUIImage.imageScaledToSize(aUIImageView.bounds.size, isOpaque : false)

如果图像没有 alpha,则将 isOpaque 设置为 true:绘图将具有更好的性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIImage 的高质量缩放 的相关文章

随机推荐

  • 在 Matlab 中每秒打印一次警告

    我试图每秒打印一条警告或仅打印一条消息 例如 已过 1 秒 有可能实现这一点吗 我用 tic toc 和循环尝试过 但还不够 此外 我从来没有得到过一秒钟的时间 是否有一个命令可以每 X 毫秒自动打印一次 有任何想法吗 提前致谢 Use a
  • 如何使用样式/模板格式化 wpf 中的小数位数?

    我正在编写一个 WPF 程序 并且试图找到一种通过样式或模板等可重复方法来格式化 TextBox 中的数据的方法 我有很多文本框 确切地说是 95 个 每个文本框都绑定到自己的数字数据 每个数据都可以定义自己的分辨率 例如 如果数据为 99
  • 将多个精灵作为一个旋转(围绕同一原点)

    我有形成 T 形状的精灵数组 我想围绕同一原点旋转它们 在我的例子中是 box2D 主体原点 如下所示 我的形状在矩阵中定义如下 int array 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
  • scjp 测试中的正则表达式测试[重复]

    这个问题在这里已经有答案了 我正在尝试解决有关正则表达式的 scjp 测试 这是一个代码 import java util regex public class TestRegex public static void main Strin
  • 如何隐藏从 Python 调度的 COM 对象

    我在 Python 中使用 COM 并且希望该对象在后台隐藏运行 使用 Excel 我会 Import win32com client Excel win32com client Dispatch Excel Application Exc
  • &货币更改为¤cy=GBP

    我有一个非常奇怪的问题 我生成的要在电子邮件中发送的查询字符串正在以某种方式更改 我编写的一个旧应用程序根据数据库中的各种参数创建一个 URL dim wpret as string a target blank href a instId
  • 根据javascript中的选择选项显示/隐藏div

    上网搜了一下 学会了如何做到这一点 实施了它 但这不起作用 我想在选择学生时显示 div 学生 在选择教师时显示 div 老师 这是 jsp 文件的一部分 HTML 代码 table tr td td tr table
  • strip_tags 足以从字符串中删除 HTML 吗?

    站点用户可以在站点上注册 并且在注册期间他可以提供名称 我希望这个名称是一个有效的名称 并且不含任何 HTML 和其他时髦字符 strip tags 足够吗 我发现没有单一的功能可以防止用户输入白痴 最好将几种混合在一起 val trim
  • 用 Python 读取 PowerPoint 表格?

    我正在使用 python pptx 模块自动更新 powerpoint 文件中的值 我可以使用以下代码提取文件中的所有文本 from pptx import Presentation prs Presentation path to pre
  • 如何很好地将qint64“转换”为QProgressBar的int

    我正在使用 QFtp 是的 我知道 并且一切正常 使用他们自己的示例中的代码作为指导 http doc qt io archives qt 4 7 network qftp ftpwindow cpp html 我遇到的唯一问题是发送 或接
  • 如何执行 SQL 表中列出的 SQL Server 代理作业

    我试图将所有 SQL Server 代理作业存储在表名称中 并希望根据它们的加载频率来执行它们 CREATE TABLE Maintainance SQLJobName varchar 100 SQL Job Name which need
  • 从 Firebase 函数将数据返回到 Android [重复]

    这个问题在这里已经有答案了 我正在尝试做的事情 只需从 Firebase Cloud Function 返回数据即可 该函数用于在支付网关的服务器中创建支付订单 我所需的有关订单详细信息的数据位于function err data 见下文
  • 像松弛评论框反应原生的动画

    我正在开发一个评论框 在向上滑动操作时将其扩展到设备的高度 并在向下滑动操作时返回到其原始高度 但我无法向其中添加动画 因为该功能无法按照我想要的方式工作 作为参考 我们可以讨论松弛评论框动画 我的代码如下 code 小吃链接 https
  • split(" +") 和 split(" ") 不同

    我想消除字符串中的真空 String input java example java aaa bbb String temp input trim split 结果是 java 示例 javaaaabbb 但我想要的结果是 java示例 j
  • Javascript非对称加密和认证

    这里的一些人正在开发一个应用程序 其中包含一些可通过登录访问的 安全区域 在过去 登录表单和后续的 安全 页面都是通过 http 传输的纯文本 因为它是一个用于访问的应用程序 在几乎不可能使用 SSL 的共享服务器上使用 例如 WordPr
  • setState() 位于 componentDidUpdate() 内部

    我正在编写一个脚本 该脚本根据下拉菜单的高度和屏幕上输入的位置将下拉菜单移动到输入下方或上方 我还想根据其方向将修饰符设置为下拉菜单 但使用setState里面的componentDidUpdate创建无限循环 这是显而易见的 我找到了使用
  • Java中如何转义引号

    我被这个问题困住了 我有一个ResultSet写入 html 报告 这ResultSetis writer write td a href rsevidencia getString Evidencia a a a td 但该链接不起作用
  • React Native 要求图像与变量中断

    为什么这条线工作时没有错误 var gicon species ii color 0 require assets gLight jpg require assets nLight png 而这一行会抛出错误 which light gLi
  • 如何设置PHP下载文件到特定目录?

    我正在寻找有关此问题的一些一般指导 我创建了一个使用 cURL 下载 csv 文件的 PHP 脚本 目前 当我运行脚本时 它会将文件下载到我的计算机 我想修改下载路径以将其路由到我的网络主机上的目录 有没有什么简单的方法可以用 PHP 来做
  • UIImage 的高质量缩放

    我需要缩放来自 iPhone 应用程序中视图层的图像的分辨率 显而易见的方法是在 UIGraphicsBeginImageContextWithOptions 中指定比例因子 但只要比例因子不是 1 0 图像质量就会受到影响 远远超出像素损