CIImage 范围以像素或点为单位?

2024-03-27

我正在使用 CIImage,虽然我知道它不是线性图像,但它确实保存了一些数据。

我的问题是 CIImage 的范围属性是否返回像素或点?根据文档 https://developer.apple.com/reference/coreimage/ciimage/1437996-extent,这说明很少,它是工作空间坐标。这是否意味着无法从 CIImage 获取像素/点,并且我必须转换为 UIImage 才能使用 .size 属性来获取点?

我有一个具有一定大小的 UIImage,当我使用 UIImage 创建 CIImage 时,范围以点为单位显示。但是,如果我通过 CIFilter 运行 CIImage 来缩放它,有时我会得到以像素值形式返回的范围。


我会尽力回答。

如果您的来源是UIImage, its size将与程度相同。但是请注意,这不是 UIImageView(其大小以磅为单位)。我们只是在谈论source image.

通过 CIFilter 运行某些内容意味着您正在操纵某些内容。如果你所做的只是操纵color,其大小/范围不应更改(与创建自己的CIColorKernel- 它是逐像素工作的)。

但是,根据 CIFilter,您may well改变大小/范围。某些过滤器会创建蒙版或图块。这些实际上可能有一个extent那是无限的!其他(模糊是一个很好的例子)对周围的像素进行采样,因此它们的范围实际上会增加,因为它们对超出源图像大小的“像素”进行采样。 (根据定制,这些是CIWarpKernel.)

是的,相当多。归根结底:

  • 过滤器在做什么?它是否需要简单地检查像素的 RGB 并执行某些操作?那么 UIImage 大小应该是输出 CIImage 范围。
  • 滤镜是否会产生依赖于像素周围像素的东西?那么输出的CIImage范围稍微大一些。多少可能取决于过滤器。
  • 有些过滤器会产生一些与输入无关的东西。其中大多数可能没有真正的范围,因为它们可能是无限的。

UIKit 和 CoreGraphics 始终使用点。像素?在某些时候 CoreImage 会这样做,但它在某种程度上是低级的(除非您想编写自己的内核),您不应该关心。范围通常可以(但请记住上述内容)等同于 UIImage 大小。

EDIT

许多图像(尤其是 RAW 图像)的尺寸可能会过大,从而影响性能。我有一个 UIImage 扩展,可以将图像大小调整为特定矩形,以帮助保持一致的 CI 性能。

extension UIImage {
    public func resizeToBoundingSquare(_ boundingSquareSideLength : CGFloat) -> UIImage {
        let imgScale = self.size.width > self.size.height ? boundingSquareSideLength / self.size.width : boundingSquareSideLength / self.size.height
        let newWidth = self.size.width * imgScale
        let newHeight = self.size.height * imgScale
        let newSize = CGSize(width: newWidth, height: newHeight)
        UIGraphicsBeginImageContext(newSize)
        self.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
        let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext();
        return resizedImage!
    }
}

Usage:

image = image.resizeToBoundingSquare(640)

在此示例中,3200x2000 的图像尺寸将缩小为 640x400。或者图像尺寸 320x200 会放大到 640x400。我在渲染图像之前和创建要在 CIFilter 中使用的 CIImage 之前对图像执行此操作。

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

CIImage 范围以像素或点为单位? 的相关文章

随机推荐

  • 获取退出代码 - Go

    我正在使用的包 os exechttp golang org pkg os exec http golang org pkg os exec 在操作系统中执行命令 但我似乎找不到获取退出代码的方法 我可以读取输出 ie package ma
  • 如何在类之间传递对象

    所以我在这里想做的是传递一个类的相同副本 class A 到另一个班级 class B but class B实例化于class A Using a new中的声明class B不起作用 因为当我希望能够使用第一个实例中的变量时 它会导致无
  • 如何在 ubuntu 中使用 python 将原始字符串发送到点阵打印机?

    我有一台点阵打印机 LX 300 通过网络连接到我的计算机 如何在 Python 中将带有 ESCP 字符的原始字符串直接发送到打印机 该计算机通过另一台计算机连接到打印机 我需要发送原始字符串 因为 LX 300 图像打印结果模糊 问题
  • 如何在 Spring.Net 中配置 NULL 对象

    在我正在工作的特定项目中 有一个空日志服务对象是合适的 由于这是在 Spring Net 中配置的 因此如何将 spring net 对象配置为 null 这就是我想做的 是否可以
  • 如何使用 axios 下载包含多种类型文件的 zip

    在我的 vueJs 应用程序中 我有以下 axios POST api 调用 该调用应该返回我希望保存在 zip 文件夹中的多个文件 但是 当我使用以下 axios 方法时 我无法打开我的 zip 并且出现错误 提示 myfolder zi
  • 重写整个 git 历史记录

    很久以前 我在 github 上分叉了一个 repo 并对几个不相关的功能做了相当多的更改 当时我对 git 基本上一无所知 所以我的提交基本上只是 自上次以来我碰巧做过的事情 我记得提交的时间是 我想向上游贡献一些更改 但在我的存储库当前
  • Javascript 相当于 Rails try 方法

    在 Rails 中我可以这样做 x user try name 这个方法返回nil if user is nil else user name Here name是一个定义在user object 我知道可以使用if then else在
  • 强制 selenium 暂停并等待字段可用

    下面是我的 python 脚本中的一段代码 它读取一个 Excel 文件并将行中的单元格分配给一个变量 然后将该变量输入到浏览器中的字段中 它工作得很好 在大多数情况下 我想做的是在浏览器加载页面后设置某种循环以执行以下操作 通过某个 ID
  • 使用 Node.js 处理 SAML 的身份提供商端

    我需要实现一个应该能够实现的身份提供者服务 使用node js 获取 验证和解析 使用私钥和证书 来自 SP 的身份验证请求example https www samltool com generic sso req php 如果一切有效
  • 隐藏 C 结构体中的成员

    我一直在阅读有关 C 语言中的 OOP 的内容 但我从来不喜欢你不能像 C 中那样拥有私有数据成员 但后来我想到你可以创建 2 个结构 一种是在头文件中定义 另一种是在源文件中定义 in somestruct h typedef struc
  • PHP 语法高亮[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个PHP 语法高亮引擎可以定制 即我可以提供我的自己的分词器对于新语言 并且可以处理多种语
  • Python - 读取电子表格

    我需要知道的是 我可以让Python读取电子表格 最好是Microsoft Excel 然后解析信息并将其输入到方程中吗 它适用于赛马程序 其中多匹马的信息将位于一个 Excel 电子表格中的不同行或列中 我需要知道是否可以分别对每匹马进行
  • WooCommerce:向购物车中的每个项目添加输入字段

    我一直在尝试向购物车中的每个项目添加一个文本输入字段 并将用户输入提交到产品的元信息 已经2天了 我还没有成功 我的目标是 获取用户对添加到购物车中的每件商品的输入 在订单的元信息中显示该输入 在发送给客户的确认电子邮件中显示该输入 到目前
  • 密码保护数据库

    我使用 Entity Framework Core 1 0 在 C 桌面应用程序中管理 SQLite 数据库 如何使用密码保护数据库 我知道如何使用 NET 类 System Data SQLite 但是如何使用 Entity Framew
  • numpy 的复数问题

    我试图再次翻译一些 matlab 代码 但我遇到了另一个问题 代码本身非常简单 只是 4 节点旋转因子的演示 这是我的尝试 from numpy import from matplotlib import pyplot as plt x z
  • 如何使重定向视图跳转到django中的某个部分

    所以我的模板中有一个部分 div Comments go here div 现在我希望我的 django 重定向功能重定向到此页面并跳转到此 div id return redirect post detail post slug 我该放在
  • “event.layerX 和 event.layerY 在 WebKit 中已损坏并已弃用。”错误

    我刚刚将 Chrome 更新到版本 16 0 912 63 现在使用 jQuery 1 7 1 时出现数百个错误 似乎只要移动鼠标就会触发 event layerX and event layerY are broken and depre
  • 避免与策略模式耦合

    我试图将策略模式应用于特定情况 但遇到了如何避免将每个具体策略耦合到为其提供数据的上下文对象的问题 以下是模式的简化情况 该模式以几种不同的方式发生 但应以类似的方式处理 我们有一个对象Acquisition它提供与特定时间框架相关的数据
  • Visual Studio 2008 HTML 格式 - 它是否有效?

    这是另一个 Visual Studio 2008 HTML 格式问题 我想我要么在臭名昭著的糟糕 VS HTML 格式中发现了一个错误 要么我做错了什么 这就是我正在做的 我通过以下方式删除所有客户端标签 工具 gt 选项 gt 文本编辑器
  • CIImage 范围以像素或点为单位?

    我正在使用 CIImage 虽然我知道它不是线性图像 但它确实保存了一些数据 我的问题是 CIImage 的范围属性是否返回像素或点 根据文档 https developer apple com reference coreimage ci