Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心映像:合并两个CIImage Swift_Ios_Swift_Core Image_Cifilter_Ciimage - Fatal编程技术网

Ios 核心映像:合并两个CIImage Swift

Ios 核心映像:合并两个CIImage Swift,ios,swift,core-image,cifilter,ciimage,Ios,Swift,Core Image,Cifilter,Ciimage,所以我有两个CIImage,我想合并在一起,每个都有一个0.5的alpha值。我怎么做 我厌倦了下面的代码,但生成的图像大小不正确,并且两个图像没有正确关联。。。请帮忙 if let image = CIImage(contentsOf: imageURL) { let randomFilter = CIFilter(name: "CIRandomGenerator") let noiseImage = randomFilter!.outputImage!.cropped(to:

所以我有两个CIImage,我想合并在一起,每个都有一个0.5的alpha值。我怎么做

我厌倦了下面的代码,但生成的图像大小不正确,并且两个图像没有正确关联。。。请帮忙

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

} 
如果let image=CIImage(contentsOf:imageURL){
让randomFilter=CIFilter(名称:“CIRandomGenerator”)

让noiseImage=randomFilter!.outputImage!.cropped(to:(CGRect)(x:CGFloat(Int.random)(in: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
}
如果let image=CIImage(contentsOf:imageURL){
让randomFilter=CIFilter(名称:“CIRandomGenerator”)

让randX=CGFloat(Int.random)(in:0..检查我做了同样的事情。它不起作用。请给我提供swift示例基于这里的帖子,我认为你应该使用UIImage而不是CIImage来避免错误的对齐。你将噪波图像范围的原点移动了一个随机偏移量(这就是上面发生对齐错误的原因)然后通过平移变换将原点移回零。我很确定您可以使用
.cropped(to:image.extent)
。我可以。但是,如果裁剪总是发生在同一个位置,噪声就不会是随机的。啊,好吧。那么每次调用都使用相同的种子?