图片的一些操作

图片的创建和从应用程序目录下复制到沙盒之中,

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)
        
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值