iOS版橘花伪春菜开发笔记之shell的pna文件的处理
之间苦于探索pna的加载问题,还走了弯路用webkit的html5来封装,感谢@PygmalionV提供的代码,这个代码能让pna提供png文件的透明模版。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 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回复。