如何在iOS中的var中存储UIImage实例?
我在如何在iOS中的var中存储UIImage实例?,ios,swift,uiimage,Ios,Swift,Uiimage,我在viewcontroller.swift中有一个过滤函数,用于过滤photoImageView的图像,该图像也存储在viewcontroller.swift中。问题是,颜色过滤器应用于先前过滤图像的结果,而不是原始图像。如何将photoImageView存储在originalImagevar中,从而对其应用过滤器 class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationContr
viewcontroller.swift
中有一个过滤函数,用于过滤photoImageView
的图像,该图像也存储在viewcontroller.swift
中。问题是,颜色过滤器应用于先前过滤图像的结果,而不是原始图像。如何将photoImageView
存储在originalImage
var中,从而对其应用过滤器
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
//MARK: Properties
@IBOutlet weak var photoImageView: UIImageView!
@IBAction func slideFilter(_ sender: UISlider) {
var hueFilter = Double(sender.value)
hueFilter = hueFilter.rounded(toPlaces: 2)
//create image to filter
let inputImage = CIImage(image: photoImageView.image!)
//Create a random color to apply
let randomColor = [kCIInputAngleKey: hueFilter]
//Apply filter to image
let filteredImage = inputImage!.applyingFilter("CIHueAdjust", parameters: randomColor)
let renderImage = context.createCGImage(filteredImage, from: filteredImage.extent)
// Reflect the change back in the interface
photoImageView.image = UIImage(cgImage: renderImage!)
}
}
当我试图在ViewController中存储变量
photoImageView
的实例时,我遇到了此错误无法在属性初始值设定项中使用实例成员“photoImageView”;属性初始值设定项在“self”可用之前运行
您不能在视图控制器中存储变量photoImageView
的实例。但是,您可以在类似viewDidLoad()
的方法中存储变量photoImageView
的实例
只需在行后使用断点:
let inputImage = CIImage(image: photoImageView.image!)
查看inputImage
的值。这是你想要操作的图像吗
因为如果inputImage
不正确,最终结果也将不正确
我希望它有帮助。您不能将变量photoImageView
的实例存储在ViewController
中。但是,您可以在类似viewDidLoad()
的方法中存储变量photoImageView
的实例
只需在行后使用断点:
let inputImage = CIImage(image: photoImageView.image!)
查看inputImage
的值。这是你想要操作的图像吗
因为如果inputImage
不正确,最终结果也将不正确
希望有帮助。我明白了
只需在ViewController
中的任何方法之外创建inputImage
变量即可。这样任何方法都可以调用它
在viewDidLoad()
中设置inputImage
的值(以及更改图像的任何位置)。因此,过滤器功能可以访问图像
最终结果:
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
//MARK: Properties
@IBOutlet weak var photoImageView: UIImageView!
var inputImage:CIImage?
override func viewDidLoad() {
super.viewDidLoad()
inputImage = CIImage(image: photoImageView.image!)
}
@IBAction func slideFilter(_ sender: UISlider) {
var hueFilter = Double(sender.value)
hueFilter = hueFilter.rounded(toPlaces: 2)
//Create a random color to apply
let randomColor = [kCIInputAngleKey: hueFilter]
//Apply filter to image
let filteredImage = inputImage!.applyingFilter("CIHueAdjust", parameters: randomColor)
let renderImage = context.createCGImage(filteredImage, from: filteredImage.extent)
// Reflect the change back in the interface
photoImageView.image = UIImage(cgImage: renderImage!)
}
}
我明白了
只需在ViewController
中的任何方法之外创建inputImage
变量即可。这样任何方法都可以调用它
在viewDidLoad()
中设置inputImage
的值(以及更改图像的任何位置)。因此,过滤器功能可以访问图像
最终结果:
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
//MARK: Properties
@IBOutlet weak var photoImageView: UIImageView!
var inputImage:CIImage?
override func viewDidLoad() {
super.viewDidLoad()
inputImage = CIImage(image: photoImageView.image!)
}
@IBAction func slideFilter(_ sender: UISlider) {
var hueFilter = Double(sender.value)
hueFilter = hueFilter.rounded(toPlaces: 2)
//Create a random color to apply
let randomColor = [kCIInputAngleKey: hueFilter]
//Apply filter to image
let filteredImage = inputImage!.applyingFilter("CIHueAdjust", parameters: randomColor)
let renderImage = context.createCGImage(filteredImage, from: filteredImage.extent)
// Reflect the change back in the interface
photoImageView.image = UIImage(cgImage: renderImage!)
}
}
var img:UIImage?
当我尝试在ViewController中存储变量的实例photoImageView
时,我遇到此错误无法在属性初始值设定项中使用实例成员“photoImageView”;属性初始值设定项在“self”可用之前运行
“当我尝试存储变量photoImageView的实例时”是什么阻止您使用photoImageView
变量?为什么需要另一个呢?因为在过滤函数的最后一行photoImageView.image=UIImage(cgImage:renderImage!)
<代码>photoImageView
更改为过滤版本。因此,如果我使用photoImageView
作为过滤器的输入图像,过滤器将更改图像的过滤版本,而不是原始版本。当我尝试在ViewController中存储变量photoImageView
的实例时,我会查找“全局变量”和“局部变量”var img:UIImage?
错误无法在属性初始值设定项中使用实例成员“photoImageView”;属性初始值设定项在“self”可用之前运行
“当我尝试存储变量photoImageView的实例时”是什么阻止您使用photoImageView
变量?为什么需要另一个呢?因为在过滤函数的最后一行photoImageView.image=UIImage(cgImage:renderImage!)
<代码>photoImageView更改为过滤版本。因此,如果我使用photoImageView
作为过滤器的输入图像,过滤器将更改图像的过滤版本,而不是原始版本。我将查找“全局变量”和“局部变量”,因此看起来像这样的func storeImage()->CIImage{let inputImage=CIImage(image:photoImageView.image!)返回inputImage}
如果是这样的话。那不是每次调用函数时都会重新分配inputImage
吗?那看起来像这样func storeImage()->CIImage{let inputImage=CIImage(image:photoImageView.image!)返回inputImage}吗
如果是这样的话。那不是每次调用函数时都重新分配inputImage
?