我有一个类,它接受一个UIImage
,用以下方式初始化CIImage
:
workingImage = CIImage.init(image: baseImage!)
然后使用该图像从中剪切出9个相邻的正方形,形成一个3x3的模式 - 在循环中执行:
for x in 0..<3
{
for y in 0..<3
{
croppingRect = CGRect(x: CGFloat(Double(x) * sideLength + startPointX),
y: CGFloat(Double(y) * sideLength + startPointY),
width: CGFloat(sideLength),
height: CGFloat(sideLength))
let tmpImg = (workingImage?.cropping(to: croppingRect))!
}
}
这些 tmpImgs 被插入到一个表中并稍后使用,但这不是重点。
这段代码可以在 iOS 9 上运行,在 iOS 10 模拟器上也可以运行,但无法在实际的 iOS 10 设备上运行。产生的图像要么全为空的,要么其中一个只有一半是正确的,其余部分仍然是空的。
这不是在 iOS 10 中应该如何处理的吗?
sideLength
、startPointX
和startPointY
的正确和有意义的值。但是你没有给出任何线索,说明你是如何得出这些关键数字的。(我还应该提到,“在模拟器上可以工作但在设备上不行”的现象通常是由于线程问题引起的。) - mattworkingImage
。裁剪后的图像被分配给tmpImg
,但由于变量从未被使用,因此立即释放。因此,workingImage
保持不变。这是真正的代码吗? - CodotmpImg
添加到图像数组中,我没有包含它,因为我认为在这种情况下它并不重要。正如我所说,这种方法在IOS9
设备上是_正确的_,这让我更加困惑。 - VID44R