我可以显示我加载的UIImage,但当我将其转换为CIimage并返回时,它无法正确显示。
struct ContentView: View {
@State var stateString = "abc";
@State var stateImage = UIImage(named: "Lenna")
var body: some View {
VStack {
Image(uiImage: stateImage!)
Text(stateString)
}
.padding()
.onAppear(){
guard let uiimage = UIImage(named: "Lenna") else {return};
guard let ciimage = CIImage(image: uiimage) else {return};
stateString = "past guard"
stateImage = UIImage(ciImage: ciimage);
}
}
}
1条答案
按热度按时间wqnecbli1#
就像马特在评论中说的,这有点傻。你这么做只是作为一种学习练习吗?
我已经将
UIImages
转换为CIImage
,对它们应用了核心图像滤镜,然后将它们转换回UIImage
(或者更确切地说,从CIImage
转换为CGImage
,再转换为UIImage
)。UIImage由
CGImage
支持,如果你有一个UIImage
,你可以用UIImage
的属性来支持CGImage
。你也可以很容易地从CGImage
创建一个UIImage
。CIImage
由Core Image使用,它是跨平台的。它与CGImage交互,而不是与UIImage交互。您需要从UIImage
转换为CGImage
,然后从CGImage
转换为CIImage
。CIImage有一个初始化器,它接受
CGImage
作为输入:在this link中,有一个函数可以将
CIImage
转换回CGImage
。该函数(来自链接,而不是我的代码)如下所示: