Я пытаюсь быстро замаскировать изображение.Вот мой код:
(Обычно originalImg
- это изображение, которое загружается из UIImagePickerController
, а затем обрезается на UIGraphicsGetImageFromCurrentImageContext()
, а
makedImage
- это изображение, нарисованное пользователем, созданноеUIGraphicsGetImageFromCurrentImageContext()
)
func imageMasking(_ originalImg: UIImage, maskImage: UIImage) -> UIImage {
let cgMaskImage = maskImage.cgImage!
let mask = CGImage(maskWidth: cgMaskImage.width, height: cgMaskImage.height, bitsPerComponent: cgMaskImage.bitsPerComponent, bitsPerPixel: cgMaskImage.bitsPerPixel, bytesPerRow: cgMaskImage.bytesPerRow, provider: cgMaskImage.dataProvider!, decode: nil, shouldInterpolate: true)!
return UIImage(cgImage: originalImg.cgImage!.masking(mask)!)
}
Когда я отображаю результат с UIImage
до UIImageView
, он работает хорошо.Однако, когда я пытаюсь получить pngData()
полученного UIImage
, данные изображения идентичны originalImg
.
Я также попытался экспортировать pngData()
полученного изображения из Xcode,но он все тот же, что и originalImg
.
Изображение: https://imgur.com/tEVBWUQ (затем нажмите кнопку «Экспорт» и сохраните изображение в формате png)
Как можноЯ действительно маскирую изображение?