【问题标题】:CIImage from UIImage return nil [duplicate]来自 UIImage 的 CIImage 返回 nil [重复]
【发布时间】:2018-12-11 18:28:30
【问题描述】:

我有一个由 CIImage 支持的 uiImage,它的 ciImage 属性不为零。但是,如果我从这个 uiImage 创建一个新的 ciImage,它似乎是 nil。是的,我知道我可以直接使用 uiImage.ciImage 属性,但我只是想知道为什么这个会失败。请问有什么帮助吗?我还需要很好的参考资料来解释所有这些苹果图像格式的内部和细节,欢迎提供好的文档或链接! 编辑:这个问题不是重复的,因为它指向 UIImage 到 CIImge 转换中的问题,而不是反向。

    if uiImage.ciImage == nil {
        fatalError() // this one passes
    }

    let ciNew = CIImage(image: uiImage)

    if ciNew == nil {
        fatalError() // this gives fatal error !?
    }

【问题讨论】:

  • 你为什么要这么做? uiImage.ciImage 是 CIImage。就用它吧。
  • @Bappaditya 是的,但我想知道为什么 Apple 提供的方法不起作用?

标签: ios swift ciimage


【解决方案1】:

是的,我知道我可以直接使用 uiImage.ciImage 属性,但我只是想知道为什么这个会失败。

因为 CIImage init(image:) 用于将 CGImage 支持的 UIImage 转换为 CIImage。那不是你所拥有的,也没有什么可以转换的。 CIImage 已经通过图像的CIImage 属性存在;无需任何其他方式来访问它。

【讨论】:

  • “因为 CIImage init(image:) 用于将 CGImage 支持的 UIImage 转换为 CIImage。”它记录在哪里?
  • 您刚刚通过实验证明了这一点。此外,仅包装 CIImage 的 UIImage 并不是真正的 UIImage——它不包含实际的图像。
  • @matt,我想我在过去两年中看到了这个问题的各种措辞。您知道是否有人曾向 Apple 发布过此错误/行为? (他们应该吗?)
  • @dfd 有人可能会争辩说,这个初始化程序的文档可能会更好。
猜你喜欢
  • 1970-01-01
  • 2020-04-06
  • 2013-02-25
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多