将UIImage转为CIImage再转回后显示空白问题求助
UIImage转CIImage再转回后无法显示的解决方案
问题出在:直接用UIImage(ciImage:)创建的UIImage仅作为CIImage的引用包装,不包含实际位图数据,而SwiftUI的Image视图需要可直接渲染的像素数据才能正常显示图片。
解决方式是通过CIContext将CIImage渲染为CGImage,再用CGImage生成包含完整位图数据的UIImage,修改onAppear部分代码即可:
.onAppear(){ guard let uiimage = UIImage(named: "Lenna") else {return}; guard let ciimage = CIImage(image: uiimage) else {return}; stateString = "past guard" // 渲染CIImage为CGImage,得到实际位图数据 guard let cgImage = CIContext().createCGImage(ciimage, from: ciimage.extent) else { return } stateImage = UIImage(cgImage: cgImage); }
核心说明:
CIContext().createCGImage(_:from:)会把CIImage的内容转换成可直接使用的位图数据(CGImage)- 基于CGImage初始化的UIImage携带了完整像素信息,能被SwiftUI的
Image视图正确识别渲染
内容的提问来源于stack exchange,提问作者P.Bjur
相关产品推荐
相关产品推荐

