如何在 swift 中暂时使我的 uiImage 变灰?

use*_*930 1 uiimageview uiimage ios swift

在我的应用程序中,我让用户将他的图像上传到我的亚马逊 s3 存储桶。一旦用户从手机捕获照片,我就会将其显示在屏幕上,然后开始上传。此时,我开始显示进度条,告诉用户现在的体育场是什么。但是有没有办法让图像在上传时变灰并在上传完成后显示原始颜色?

\n\n

到目前为止我的代码如下:

\n\n
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {\n\n    let path = NSTemporaryDirectory().stringByAppendingString("image.jpeg")\n\n    if let data = UIImageJPEGRepresentation(image, 0.8) {\n        data.writeToFile(path, atomically: true)\n\n    }\n\n    self.dismissViewControllerAnimated(true, completion: {})\n\n    let credentialsProvider = AWSCognitoCredentialsProvider(regionType:CognitoRegionType,\n        identityPoolId:CognitoIdentityPoolId)\n    let configuration = AWSServiceConfiguration(region:CognitoRegionType, credentialsProvider:credentialsProvider)\n    AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration\n\n    let ext = "jpeg"\n\n    let uploadRequest = AWSS3TransferManagerUploadRequest()\n    uploadRequest.body = NSURL(string: "file://"+path)\n    uploadRequest.key = NSProcessInfo.processInfo().globallyUniqueString + "." + ext\n    uploadRequest.bucket = S3BucketName\n    uploadRequest.contentType = "image/" + ext\n\n\n//here I would like to present a greyed out photo until it\'s fully uploaded:\n    imageView.image = image\n\n\n    progressBar.hidden = false\n    uploadRequest.uploadProgress = { (bytesSent, totalBytesSent, totalBytesExpectedToSend) -> Void in\n        dispatch_async(dispatch_get_main_queue(), { () -> Void in\n            if totalBytesExpectedToSend > 0 {\n                self.progressBar.progress = Float(Double(totalBytesSent) / Double(totalBytesExpectedToSend))\n\n            }\n        })\n    }\n    let transferManager = AWSS3TransferManager.defaultS3TransferManager()\n    transferManager.upload(uploadRequest).continueWithBlock { (task) -> AnyObject! in\n        if let error = task.error {\n            print("Upload failed \xe2\x9d\x8c (\\(error))")\n        }\n        if let exception = task.exception {\n            print("Upload failed \xe2\x9d\x8c (\\(exception))")\n        }\n        if task.result != nil {\n\n\n\n            let s3URL = NSURL(string: "http://s3-eu-west-1.amazonaws.com/\\(S3BucketName)/\\(uploadRequest.key!)")!\n            //print("Uploaded to:\\n\\(s3URL)")\n            self.photoURL = s3URL.absoluteString\n            print(self.photoURL)\n\n        }\n        else {\n            print("Unexpected empty result.")\n        }\n        return nil\n    }\n\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Tam*_*ara 6

下面的类别将允许将您的图像变成黑白图像,而无需更改初始图像(不确定您的情况下“灰色”到底意味着什么,但您可以轻松尝试)。(斯威夫特 4)

extension UIImage {
    var grayed: UIImage {
        guard let ciImage = CIImage(image: self)
            else { return self }
        let filterParameters = [ kCIInputColorKey: CIColor.white, kCIInputIntensityKey: 1.0 ] as [String: Any]
        let grayscale = ciImage.applyingFilter("CIColorMonochrome", parameters: filterParameters)
        return UIImage(ciImage: grayscale)
    }
}
Run Code Online (Sandbox Code Playgroud)