您的位置:首页 > 移动开发 > Swift

swift - 简单的图片滤镜+保存view转成图片存入本地相册

2017-11-28 00:00 507 查看
import UIKit
import ZLLTools
import PhotoFramework
import Photos
import AssetsLibrary
class ViewController: UIViewController {
var imageView :UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
GetPhoto.get()
imageView = UIImageView.init(frame: CGRect.init(x: 50, y: 50, width: 300, height: 200))
self.view.addSubview(imageView)
imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer.init(target: self, action: #selector(self.testClick))
imageView.addGestureRecognizer(tap)

imageView.image = ZLLToolCategory.getVideoFirstViewImage(videoUrlString: "http://gslb.miaopai.com/stream/1UKfVpOmazRYEb4fVejwhgpX~3uIxmHBV~8VCQ__.mp4")//获取视频第一帧

let btn = UIButton.init(frame: CGRect.init(x:(375) / 2 , y: 200 + 20 + 50, width: 60, height: 40))
btn.setTitle("滤镜", for: .normal)
btn.backgroundColor = UIColor.red
btn.addTarget(self, action: #selector(滤镜), for: .touchUpInside)
self.view.addSubview(btn)

let picBtn = UIButton.init(frame: CGRect.init(x:(375) / 2 , y: 200 + 20 + 60 + 50, width: 100, height: 40))
picBtn.setTitle("保存图片", for: .normal)
picBtn.backgroundColor = UIColor.blue
picBtn.addTarget(self, action: #selector(saveBtnClick), for: .touchUpInside)
self.view.addSubview(picBtn)
}
@objc func testClick() {
//选择图片
_ = presentImagePicker(maxSelected: 4, completeHandler: {[weak self] (assets) in
for asset in assets {
print(asset)
//设置图片尺寸
let size = CGSize.init(width: asset.pixelWidth, height: asset.pixelHeight)
//获取图片
PHImageManager.default().requestImage(for: asset, targetSize: size, contentMode: .default, options: nil, resultHandler: { (image, info) in
self?.imageView.image = image
})
}
})
}

@objc func 滤镜(){
let inputImage = CIImage.init(image: imageView.image!)
//        let filter = CIFilter.init(name: "CIAffineTransform")//倾斜
//        let filter = CIFilter.init(name: "CISepiaTone")//棕褐色
//        let filter = CIFilter.init(name: "CIPhotoEffectNoir")//黑白
let filter = CIFilter.init(name: "CIPhotoEffectNoir")
filter?.setValue(inputImage, forKey: kCIInputImageKey)
//        filter?.setValue(NSValue.init(cgAffineTransform: CGAffineTransform.init(a: 0.7, b: 0.5, c: 0.3, d: 1.0, tx: 0.0, ty: 0.0)), forKey: "inputTransform")//倾斜
//        filter?.setValue(0.5, forKey: "inputIntensity")//棕褐色

//        filter?.setValue(0.5, forKey: "inputIntensity")

let outputImage = filter?.outputImage
let cgImage = CIContext.init(options: nil).createCGImage(outputImage!, from: (outputImage?.extent)!)
imageView.image = UIImage.init(cgImage: cgImage!)

}

//将view转成图片并保存相册
@objc func saveBtnClick(){
let frame = imageView.frame
UIGraphicsBeginImageContext(frame.size)
imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.loadImage(image: image!)
}

//保存图片
func loadImage(image:UIImage){

UIImageWriteToSavedPhotosAlbum(image, self, #selector(self.image(image:didFinishSavingWithError:contextInfo:)), nil)
}

@objc func image(image: UIImage, didFinishSavingWithError: NSError?,contextInfo: AnyObject)
{
if didFinishSavingWithError != nil
{
print("error!")
return
}

print("保存成功")
}

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Swift iOS