2016-10-02 3 views
1

Swift에서 Core Image를 사용하여 사진을 편집하고 있는데 사진을 저장할 때 문제가 있습니다. 사진에 필터를 적용한 후에는 저장할 수 없습니다. 그러나 필터가 없으면 저장 될 수 있습니다. 어떤 아이디어?Swift 3.0의 사진 라이브러리에 필터가있는 이미지 저장

import UIKit 

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet weak var pickedImaged: UIImageView! 


override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 


@IBAction func camerabuttonaction(_ sender: UIButton) { 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){ 
    let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera; 
     imagePicker.allowsEditing = false 
     self.present(imagePicker, animated: true, completion: nil) 
    } 
} 


@IBAction func photolibraryaction(_ sender: UIButton) { 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){ 
     let imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary; 
     imagePicker.allowsEditing = false 
     self.present(imagePicker, animated: true, completion: nil) 
    } 
} 


@IBAction func saveaction(_ sender: UIButton) { 
UIImageWriteToSavedPhotosAlbum(pickedImaged.image!, nil, nil, nil) 
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]) { 
    pickedImaged.image = image 
    self.dismiss(animated: true, completion: nil);  
} 


@IBAction func addfilter(_ sender: UIButton) { 

    let image = pickedImaged.image, cgimg = image?.cgImage 
    let coreImage = CIImage(cgImage: cgimg!)  
    let filter = CIFilter(name: "CISepiaTone") 
    filter?.setValue(coreImage, forKey: kCIInputImageKey) 
    filter?.setValue(0.5, forKey: kCIInputIntensityKey)  
    let output = filter?.value(forKey: kCIOutputImageKey) as? CIImage 
    let filteredImage = UIImage(ciImage: output!) 
    pickedImaged.image = filteredImage  
} 


} 

답변

1

내 코드가 모두 iOS 용 작동 9 & 아이폰 OS 10 :

(1) 난 항상 당신과 함께 클립 보드와 기능을 "저장"을 복사 할 수있는 기능을 제공합니다 아이폰 OS 점유율 확장을 사용 메시지, 메일 등 코드는 다음과 같습니다.

(2) 사진 편집 코드를 보지 않고도 나는 분명히 말할 수 있습니다. 하지만 - (a) CI 필터 출력을 사물에 공급하고 (b) 필터에 필요한 매개 변수를 적절히 공급하고 있는지 확인하십시오.

나는 주석 "주"의 특정 유형을 가지고 있지만, 여기에 내가 무엇을 : 당신이 말한 것처럼

let context = CIContext() 
let final = context.createCGImage(filter.outputImage, from: filter.outputImage.extent) 
let shareImage = UIImage(cgImage: final!) 
let vc = UIActivityViewController(activityItems: [shareImage], applicationActivities: []) 
vc.excludedActivityTypes = [ 
    //UIActivityTypePostToTwitter, 
    //UIActivityTypePostToFacebook, 
    UIActivityType.postToWeibo, 
    //UIActivityTypeMessage, 
    //UIActivityTypeMail, 
    UIActivityType.print, 
    //UIActivityTypeCopyToPasteboard, 
    UIActivityType.assignToContact, 
    //UIActivityTypeSaveToCameraRoll, 
    UIActivityType.addToReadingList, 
    //UIActivityTypePostToFlickr, 
    UIActivityType.postToVimeo, 
    UIActivityType.postToTencentWeibo 
] 
present(vc, 
     animated: true, 
     completion: nil) 
vc.popoverPresentationController?.sourceView = self.view 
vc.completionWithItemsHandler = {(activity, success, items, error) in 
} 
+0

들으 @dfd 나는 ciImage로 변경 ciImage 때까지 작동 많은 방법을 시도하지만 있습니다. 고맙습니다! – Pokotuz

관련 문제