GVKun编程网logo

为什么我无法在Swift iOS应用中使用CIFilter将图像恢复为原始图像

9

针对为什么我无法在SwiftiOS应用中使用CIFilter将图像恢复为原始图像这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展iOSSwift动画–将图像移动到新位置、ios–CIFilte

针对为什么我无法在Swift iOS应用中使用CIFilter将图像恢复为原始图像这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展iOS Swift动画 – 将图像移动到新位置、ios – CIFilter输出图像为零、ios – swift,使用alamofire将图像上传到php服务器、ios – SWIFT:为什么我无法在UIWebView中加载当前的URL?等相关知识,希望可以帮助到你。

本文目录一览:

为什么我无法在Swift iOS应用中使用CIFilter将图像恢复为原始图像

为什么我无法在Swift iOS应用中使用CIFilter将图像恢复为原始图像

我正在开发一个简单的应用程序。它具有带有预加载图像和按钮的图像视图。按下按钮时,应在图像视图中反转图像。

它是第一次工作,但是我希望当我再次按下该按钮时,它可以将图像转换回其原始形式。但是,第二次按下按钮时,它崩溃了。

这是来自的相关代码ViewController.swift

    @IBOutlet weak var imageView: UIImageView!    @IBOutlet weak var invertButton: UIButton!    @IBAction func invertButtonPressed(sender: UIButton) {        let beginImage = CIImage(image: imageView.image!)        let filter = CIFilter(name: "CIColorInvert")!        filter.setValue(beginImage, forKey: kCIInputImageKey)        imageView.image = UIImage(CIImage: (filter.outputImage)!)    }

基本上,beginImage成为nil第二次左右,我不知道为什么。我尝试通过将这些密集的行分成尽可能多的let分配进行调试,但是该CIImage构造函数发生了一些神秘的事情。有任何想法吗?

答案1

小编典典

问题是这一行:

imageView.image = UIImage(CIImage: (filter.outputImage)!)

你不能那样做。CIImage不会神奇地变成UIImage。图像视图需要基于 位图 的图像,而不是基于CIImage的图像。您必须 渲染
CIImage才能将其转换为UIImage,方法是获取CIContext并告诉它创建CGImage,或者将CIImage绘制到图形上下文中。

iOS Swift动画 – 将图像移动到新位置

iOS Swift动画 – 将图像移动到新位置

我正在尝试实现这个很酷的功能,其中应用程序加载后的徽标稍微向上移动并显示登录视图.问题是当我使用这段代码时:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.
        UIView.animateWithDuration(2,animations: {
            var newCenter = self.logoImage.center
            newCenter.y -= 100
            self.logoImage.center = newCenter
            },completion: { finished in
                println("Basket doors opened!")
        })
    }

徽标从我想要移动到的地方移动到原点.因此,在此示例中,徽标已经显示为(y-100),然后移动到原点X,Y.

解决方法

由于视图实际上并未在viewDidLoad()中的屏幕上显示,因此您不应该尝试为其中的任何内容设置动画.相反,您应该等到视图完全呈现,这发生在viewDidAppear(动画:Bool)中.另外,我建议在动画调用之外计算newCenter var,然后在动画调用中设置self.logoImage.center = newCenter.

ios – CIFilter输出图像为零

ios – CIFilter输出图像为零

我正在使用核心图像,我正在为我的图像应用CIFilter棕褐色调.我在viewDidLoad中运行一次过滤器,然后立即调用另一个再次添加过滤器的函数.出于某种原因,当我尝试访问输出图像时,应用程序崩溃并说输出图像为零.任何人都知道为什么会这样吗?

谢谢

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var myimage: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.
        let image = CIImage(image: myimage.image)
        let filter = CIFilter(name: "CISepiaTone")
        filter.setDefaults()
        filter.setValue(image,forKey: kCIInputimageKey)
        myimage.image = UIImage(CIImage: filter.outputimage)
        self.reapplyFilter()
    }

        func reapplyFilter(){
            let image = CIImage(image: myimage.image)
            let filter = CIFilter(name: "CISepiaTone")
            filter.setDefaults()
            filter.setVa    lue(image,forKey: kCIInputimageKey)
    //ERROR HERE: Fatal error: unexpectedly found nil while unwrapping an Optional value
            myimage.image = UIImage(CIImage: filter.outputimage)
//ERROR
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // dispose of any resources that can be recreated.
        }



}

解决方法

你不能调用UIImage(CIImage :)并使用UIImage作为UIImageView的图像. UIImageView需要一个由位图(CGImage)支持的UIImage.用CIImage实例化的UIImage没有位图;它没有实际图像,它只是一组应用过滤器的指令.这就是你的UIImageView图像为零的原因.

ios – swift,使用alamofire将图像上传到php服务器

ios – swift,使用alamofire将图像上传到php服务器

我使用以下代码上传带alamofird的照片:

Alamofire.upload(.POST,Url,multipartFormData: {
            multipartFormData in
            if let Data = UIImagePNGRepresentation(imageData) {
                multipartFormData.appendBodyPart(data: Data,name: "file",fileName: filename+".png",mimeType: "image/png")
                //print(Data)
            }
            multipartFormData.appendBodyPart(data: sessionId.dataUsingEncoding(NSUTF16LittleEndianStringEncoding)!,name: "session_id")
            multipartFormData.appendBodyPart(data: NSUserDefaults.standardUserDefaults().stringForKey("user_id")!.dataUsingEncoding(NSUTF8StringEncoding)!,name: "sender_id")

            },encodingCompletion: {
                encodingResult in
                switch encodingResult {
                case .Success(let upload,_,_):
                    upload.responseJSON { response in
                        print(response)
                        //var data = JSON(response.result.value!)
                    }
                case .Failure(let encodingError):
                    print(encodingError)
                }
        })

我有以下错误:

FAILURE: Error Domain=NSCocoaErrorDomain Code=3840 “Invalid value around character 0.” UserInfo={NSDebugDescription=Invalid value around
character 0.}

从前一天开始,这段代码正在运行

解决方法

只需更换你的

multipartFormData.appendBodyPart(data: NSUserDefaults.standardUserDefaults().stringForKey("user_id")!.dataUsingEncoding(NSUTF8StringEncoding)!,name: "sender_id")

此构造函数的构造函数方法

multipartFormData.appendBodyPart(data: image1Data,name: "post_img0",fileName: fileName!,mimeType: "image/png")

防爆.

let userID = NSUserDefaults.standardUserDefaults().integerForKey("UserID")
        let userData = String("\(userID)").dataUsingEncoding(NSUTF8StringEncoding)

        var image1Data : NSData!
        if(self.fecalImageView.image == nil ){
        }else{
            image1Data = UIImageJPEGRepresentation( self.fecalImageView.image!,0.5)!
        }
        Alamofire.upload(
            .POST,"http://www.imagesample.PHP",multipartFormData: { multipartFormData in

                 multipartFormData.appendBodyPart(data: userData!,name: "user_id")
                if(image1Data == nil){

                }else{
                    multipartFormData.appendBodyPart(data: image1Data,mimeType: "image/png")
                }
            },encodingCompletion: { encodingResult in
                switch encodingResult {

                case .Success(let upload,_):
                    upload.responseJSON { response in

                        if let dict = response.result.value {
                            let msg = dict["msg"]!


                            if msg!.isEqualToString("sample Added successfully") {


                            }
                        }
                    }
                case .Failure(let encodingError):

                    print(encodingError)
                }
            }
        )

这将解决您的问题.这个帮助.

ios – SWIFT:为什么我无法在UIWebView中加载当前的URL?

ios – SWIFT:为什么我无法在UIWebView中加载当前的URL?

我需要将当前的URL加载到webview中,这就是我试图得到它的方法,但它给了我这个错误:“无法转换exporessions类型’ST7 ??’输入’String’

这是代码

var currentURL : Nsstring = webView.request?.URL.absoluteString!

这有什么问题?

解决方法

如果你在括号周围加上括号,那么错误就会消失:
let currentURL : Nsstring = (webView.request?.URL.absoluteString)!

关于为什么我无法在Swift iOS应用中使用CIFilter将图像恢复为原始图像的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于iOS Swift动画 – 将图像移动到新位置、ios – CIFilter输出图像为零、ios – swift,使用alamofire将图像上传到php服务器、ios – SWIFT:为什么我无法在UIWebView中加载当前的URL?等相关内容,可以在本站寻找。

本文标签: