iOS版橘花伪春菜开发笔记1.3之shell的pna文件的处理

之间苦于探索pna的加载问题,还走了弯路用webkit的html5来封装,感谢@PygmalionV提供的代码,这个代码能让pna提供png文件的透明模版。

import UIKit

class ViewController: UIViewController{
  override func viewDidLoad() {
        super.viewDidLoad()
           let img = UIImage(named:"res/surface0000.png")! //为源图形创建一个图像类
        let maskimg = UIImage(named:"res/surface0000.pna")! //为图形蒙板创建一个图像类
        let alphaimg = UIImage(cgImage:mask(img.cgImage!,maskimg.cgImage!))
        let imageView=UIImageView(image:alphaimg)//创建一个图像视图用作图像的容器
        self.view.addSubview(imageView)//把图像视图添加到当前的根视图
    }
     
    func mask(_ cgimage:CGImage,_ maskimage:CGImage)->CGImage{
        let colorSpace=CGColorSpaceCreateDeviceGray()//创建一个设备相关的灰度颜色空间的引用
        let bitmapInfo=CGBitmapInfo(rawValue:CGBitmapInfo().rawValue|CGImageAlphaInfo.none.rawValue)//创建像素位图
        let context=CGContext(data:nil,width:maskimage.width,height:maskimage.height,bitsPerComponent:8,bytesPerRow:0,space:colorSpace,bitmapInfo:bitmapInfo.rawValue)//创建图形画布,其中宽高度为maskimage的宽高度,maskimage为提供蒙版的文件如PNA,,bitsPerComponent:8代表图片每个颜色所占的bits,图形为32位,每个颜色通道占用8位,共4个通道,RGBA,R=RED,G=GREEN,B=BLUE,A=ALPHA。
        context?.draw(maskimage,in:CGRect(x:0,y:0,width:maskimage.width,height:maskimage.height))//用创建的图形画布绘制图形
        let greyImage=context?.makeImage()//将图形画布的图形传递给greyImage
        return cgimage.masking(greyImage!)!//将greyImage的图形用作源图形cgimage的图层萌版
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值