Ошибка Swift в консоли "Функция ROI CIKernel не позволила мозаику"
Полная ошибка: "Не удалось отобразить 921600 пикселей, поскольку функция ROI в CIKernel не позволяла использовать мозаику". каждый раз, когда я пытаюсь преобразовать изображение с помощью перевода.
Код это просто:
var flippedGradient = gradient.transformed(by:CGAffineTransform(scaleX: -1, y: 1))
flippedGradient = gradient.transformed(by:CGAffineTransform(translationX: flippedGradient.extent.width, y: 0)) // causes error
// mask hue 2 with gradient with transparent background
let alphaMaskBlend2 = CIFilter(name: "CIBlendWithAlphaMask",
withInputParameters: [kCIInputImageKey: hue2,
kCIInputBackgroundImageKey: transBGCI,
kCIInputMaskImageKey:flippedGradient])?.outputImage
Выполнение перевода вызывает ошибку и делает весь экран серым, вместо того, чтобы визуализировать изображение в противном случае.
Связанная тема, без разрешений, связанных с тем, как я смогу перевести мой ciImage: iOS 10: функция ROI в CIKernel не позволяла использовать тайлы
1 ответ
Простите за опоздание, но я только что натолкнулся на ту же ошибку и, возможно, помогу. Я использовал другой фильтр (CIShadedMaterial
) и обошел его, обрезав мое изображение до меньшего размера. Вот мой код:
extension UIImage {
func resizeToBoundingSquare(_ boundingSquareSideLength : CGFloat) -> UIImage {
let imgScale = self.size.width > self.size.height ? boundingSquareSideLength / self.size.width : boundingSquareSideLength / self.size.height
let newWidth = self.size.width * imgScale
let newHeight = self.size.height * imgScale
let newSize = CGSize(width: newWidth, height: newHeight)
UIGraphicsBeginImageContext(newSize)
self.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
let resizedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
return resizedImage!
}
Использование:
myImage = myImage.resizeToBoundingSquare(640)
- Первоначально я использовал 4096 и понял, что оставил это в.
- Кредит действительно должен пойти к Саймону Гладману для этого. Я не смог найти точное место, где я нашел, что использование 640x640 "достаточно хорошо", но эта ссылка "достаточно близка".