У меня есть приложение, где при выборе UICollectionViewCell с некоторым фильтром он реализует этот фильтр для моего UIImage. Но это применяется так медленно и с замораживанием. Как я могу повысить скорость реализации фильтров изображений на моих изображениях?Как я могу повысить скорость реализации фотофильтров?
func applyFilter(image: UIImage) -> UIImage {
var filter = CIFilter(name: "CIColorCube")
filter!.setValue(colorCubeData, forKey: "inputCubeData")
filter!.setValue(kDimension, forKey: "inputCubeDimension")
let sourceImage = CIImage(image: image)
filter.setValue(sourceImage, forKey: kCIInputImageKey)
let context = CIContext(options: nil)
let outputCGImage = context.createCGImage(filter.outputImage!, fromRect: filter.outputImage!.extent)
let newImage = UIImage(CGImage: outputCGImage, scale: 1.0, orientation: self.imageView.image!.imageOrientation)
return newImage
}
это мой код фильтра. И я призываю, что в
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("filterCell", forIndexPath: indexPath) as! FiltersCollectionViewCell
let op1 = NSBlockOperation {() -> Void in
NSOperationQueue.mainQueue().addOperationWithBlock({() -> Void in
cell.imageView.image = self.applyFilter(image: self.croppedImage!)
})
}
self.queue!.addOperation(op1);
return cell
}
Вы можете позволить ему выполнить в фоновом режиме и показать загрузочный бар, пока он не будет готов? – Eric
Вы пытались уменьшить масштаб изображения? Я бы запускал Time Profiler, чтобы найти наиболее интенсивный код, который вам нужно оптимизировать. –