【问题标题】:Core Image: merge two CIImage SwiftCore Image:合并两个 CIImage Swift
【发布时间】:2019-03-19 15:54:58
【问题描述】:

所以我有 2 个 CIImage 想要合并在一起,所以每个的 alpha 为 0.5。我该怎么做?

我厌倦了以下代码,但生成的图像大小不正确,并且两个图像未正确结合...请帮助!

if let image = CIImage(contentsOf: imageURL) {
    let randomFilter = CIFilter(name: "CIRandomGenerator")
    let noiseImage = randomFilter!.outputImage!.cropped(to: (CGRect(x: CGFloat(Int.random(in: 1..<1000)), y: CGFloat(Int.random(in: 1..<1000)), width: image.extent.width, height: image.extent.height)))
    let compoimg = noiseImage.composited(over: image) //Misaligned image

} 

【问题讨论】:

标签: ios swift core-image cifilter ciimage


【解决方案1】:

问题在于随机噪声生成器,因为随机噪声是从无限噪声映射中裁剪出来的......正确的代码可以补偿这种转换:

if let image = CIImage(contentsOf: imageURL) {
    let randomFilter = CIFilter(name: "CIRandomGenerator")
    let randX = CGFloat(Int.random(in: 0..<1000))
    let randY = CGFloat(Int.random(in: 0..<1000))
    let noiseImage = randomFilter!.outputImage!.cropped(to: (CGRect(x: randX, y: randY, width: image.extent.width, height: image.extent.height)))
    let tt = noiseImage.transformed(by: CGAffineTransform.init(translationX: -randX, y: -randY))
    let compoimg = tt.composited(over: image) //Correctly allied image
}

【讨论】:

  • 您将噪声图像范围的原点移动一个随机偏移量(这就是发生上述未对齐的原因),然后通过平移变换将原点移回零。我很确定你可以使用.cropped(to: image.extent)
  • 我可以。但是,如果裁剪总是发生在同一个地方,噪音就不会是随机的。
  • 啊,好的。所以每次调用都使用相同的种子?
猜你喜欢
  • 2018-05-31
  • 1970-01-01
  • 2012-06-06
  • 2021-06-03
  • 1970-01-01
  • 2011-10-21
  • 2021-09-05
  • 1970-01-01
  • 2015-02-09
相关资源
最近更新 更多