2016-10-02 7 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 & iOSの10:

(1)私はいつもあなたと一緒に、クリップボードや機能を「保存」するためにコピーする機能を提供するiOSのシェア拡張子を使用メッセージ、メールなどコードは以下の通りです。

(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

のTHX @dfd私はciImageに変更しciImageまで、仕事の多くの方法を試してみてくださいではなく、持っています。ありがとうございました! – Pokotuz

関連する問題