Swift playground - 无法将过滤后的 UIImage 转换为 CGImage
Swift playground - cannot convert a filtered UIImage to a CGImage
在 Swift 操场上,我正在加载 JPEG,将其转换为 UIImage 并将其过滤为单色。
然后我将生成的过滤图像转换为 UIImage。
输入和过滤后的图像正确显示。
然后我将两个图像都转换为 CGImage 类型。
这适用于输入图像,但转换后的过滤图像 returns nil:
// Get an input image
let imageFilename = "yosemite.jpg"
let inputImage = UIImage(named: imageFilename )
let inputCIImage = CIImage(image:inputImage!)
// Filter the input image - make it monochrome
let filter = CIFilter(name: "CIPhotoEffectMono")
filter!.setDefaults()
filter!.setValue(inputCIImage, forKey: kCIInputImageKey)
let CIout = filter!.outputImage
let filteredImage = UIImage(CIImage: CIout!)
// Convert the input image to a CGImage
let inputCGImageRef = inputImage!.CGImage // Result: <CGImage 0x7fdd095023d0>
// THE LINE ABOVE WORKS
// Try to convert the filtered image to a CGImage
let filteredCGImageRef = filteredImage.CGImage // Result: nil
// THE LINE ABOVE DOES NOT WORK
// Note that the compiler objects to 'filteredImage!.CGImage'
怎么了?
您所做的从 CIImage
创建的 UIImage
没有 CGImage
支持。您需要明确创建一个:
let context = CIContext()
let filteredCGImageRef = context.createCGImage(
CIout!,
fromRect: CIout!.extent)
如果您需要 UIImage
,请从 CIContext
呈现的 CGImage
创建它:
UIImage(CGImage: filteredCGImageRef)
干杯,
西蒙
在 Swift 操场上,我正在加载 JPEG,将其转换为 UIImage 并将其过滤为单色。 然后我将生成的过滤图像转换为 UIImage。
输入和过滤后的图像正确显示。
然后我将两个图像都转换为 CGImage 类型。 这适用于输入图像,但转换后的过滤图像 returns nil:
// Get an input image
let imageFilename = "yosemite.jpg"
let inputImage = UIImage(named: imageFilename )
let inputCIImage = CIImage(image:inputImage!)
// Filter the input image - make it monochrome
let filter = CIFilter(name: "CIPhotoEffectMono")
filter!.setDefaults()
filter!.setValue(inputCIImage, forKey: kCIInputImageKey)
let CIout = filter!.outputImage
let filteredImage = UIImage(CIImage: CIout!)
// Convert the input image to a CGImage
let inputCGImageRef = inputImage!.CGImage // Result: <CGImage 0x7fdd095023d0>
// THE LINE ABOVE WORKS
// Try to convert the filtered image to a CGImage
let filteredCGImageRef = filteredImage.CGImage // Result: nil
// THE LINE ABOVE DOES NOT WORK
// Note that the compiler objects to 'filteredImage!.CGImage'
怎么了?
您所做的从 CIImage
创建的 UIImage
没有 CGImage
支持。您需要明确创建一个:
let context = CIContext()
let filteredCGImageRef = context.createCGImage(
CIout!,
fromRect: CIout!.extent)
如果您需要 UIImage
,请从 CIContext
呈现的 CGImage
创建它:
UIImage(CGImage: filteredCGImageRef)
干杯,
西蒙