У меня есть метод для маскировки черно-белого изображения, вырезая (т.е. делая прозрачным) любые пиксели, которые выше или ниже определенной яркости.Результатом будет то же самое черно-белое изображение, но с яркостью, превышающей 70% или ниже 25% (или что вы выберете), измененной на прозрачную.
![Desired Result](https://i.stack.imgur.com/O82Ia.jpg)
Он отлично работал на iOS 11, но сломался на iOS 12. Теперь он возвращает оригинальное, цельное изображение без изменений каждый раз.
-(UIImage*)imageWithLumaMaskFromDark:(CGFloat)lumaFloor toLight:(CGFloat)lumaCeil {
// inputs range from 0 - 255
CGImageRef rawImageRef = self.CGImage;
const CGFloat colorMasking[6] = {lumaFloor, lumaCeil, lumaFloor, lumaCeil, lumaFloor, lumaCeil};
UIGraphicsBeginImageContext(self.size);
CGImageRef maskedImageRef = CGImageCreateWithMaskingColors(rawImageRef, colorMasking);
{
//if in iphone
CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, self.size.height);
CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0);
}
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, self.size.width, self.size.height), maskedImageRef);
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
CGImageRelease(maskedImageRef);
UIGraphicsEndImageContext();
return result;
}
Я опытный разработчик iOS, но полный CGImage/ CGContext Noob.Может кто-нибудь помочь мне выяснить, что могло сломаться с этим методом в iOS 12, и что я могу сделать, чтобы это исправить?