图片的创建和从应用程序目录下复制到沙盒之中,
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//把资源文件中的图片复制到沙盒中的document中 这是因为沙盒中刚开始没有任何的东西
self.createCopy()
//放在应用程序包中,就是在目录里或者Assets里面 可以通过下面三种方法加载
let image = UIImage(named: "icon.png")
//或者文件的路径名
let path = NSBundle.mainBundle().pathForResource("icon", ofType: "png")
let image1 = UIImage(contentsOfFile: path!)
//或者转化为数据流的方法
let data = NSData(contentsOfFile: path!)
let image3 = UIImage(data: data!)
//如果实在应用程序的沙盒中的document目录下
let documentDirectorys = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentDirectory = documentDirectorys[0] as! NSString
//获得应用程序在document下的目录
let path1 = documentDirectory.stringByAppendingPathComponent("icon.png")
let image4 = UIImage(contentsOfFile: path!)
//或者先转化成数据流 再转化成uiimage
let data1 = NSData(contentsOfFile: path1)
let image5 = UIImage(data: data1!)
//通过云服务器存储的
let url = NSURL(string: "http://www.xxx.png")
let data2 = NSData(contentsOfURL: url!)
let image6 = UIImage(data: data2!)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//定义复制的函数 将主应用程序下的图片复制到沙盒之中
func createCopy() {
//创建文件资源管理器
let fileManger = NSFileManager.defaultManager()
//获得沙盒下的文件目录
let documentDic = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let path = (documentDic[0] as! NSString).stringByAppendingPathComponent("icon.png")
//沙盒目录下的文件名是否存在
if !fileManger.fileExistsAtPath(path) {
let defauleDBPath = NSBundle.mainBundle().resourcePath?.stringByAppendingString("icon.png")
//复制文件的目录 从该应用程序下复制到沙盒之中
do {let success = try fileManger.copyItemAtPath(defauleDBPath!, toPath: path)
}catch{
print("error")
}
}
}
}
复制的过程实际上就是文件名的传去 stringByAppendingComponet是表示去到图片或者资源 与stringByAppendingString或者format是创建文件的路径 两者是不同的
图片的几种区分
UIImage是UIKIt框架中定义的图像类,封装了高层次的图像类,可以通过多种方式创建这些对象
CGImage实在core graphics中定义的,表示位图的信息,通常是通过CGImageRef来使用CGImage的
CIImage是在Core Image中定义的,封装的图像类能够很好的进行图像的处理,例如滤镜的使用
滤镜的使用流程
创建图像上下文CIContext
创建滤镜CIFilter
创建过滤原图片 CIImage
调用CIFilter的setValue: forKey:方法为滤镜指定源图片
设置滤镜的参数(可选)
取得输出图片显示或保存
大神的博客
http://www.cnblogs.com/kenshincui/p/3959951.html#otherCGContext
//基于GPU的渲染
context = CIContext(options: nil)
//取得滤镜
filter = CIFilter(name: "CIColorControls")!
//创建过滤的图片
image = CIImage(CGImage: (imageView.image?.CGImage)!)
//设置滤镜的输入参数
filter.setValue(image, forKey: "inputImage")
//取得输出的图像
result = filter.outputImage!
//先转化成CGImage
let temp = context.createCGImage(result, fromRect: CGRectMake(0, 0, (imageView.image?.size.width)!, (imageView.image?.size.height)!))
//随后在转化成UIImage因为图像的显示只接受UIImage
imageView.image = UIImage(CGImage: temp)
}