iOS生成二维码和扫描识别二维码
1 .生成二维码
1).相关类:
CIFilter
官方文档描述CIFilter类,是一个操作一个或多个图片来生成一个新的图片数据的图片处理器;CIFilter可以看做是一个滤镜,Apple提供了上百种的CIFilter,通过filterWithName:(NSString*)
方法获取,CIFilter的种类可以从这里查看。
CIFIlter具有强大图像处理的功能,具体使用可以查看官方文档
CIImage
由Core Image filters
生成或处理的图片数据。CIImage虽然含有图片数据,但是它并不是图片,CIImage含有生成一张图片的所有数据,除非Core Image被告知要去渲染生成一张图片,否则它不会自己去渲染生成图片。
extent
属性表示图片尺寸。
CGBitmapContext
CGBitmapContext是用来生成bitmap的Core Graphics上下文。生成函数:
CGContextRef CGBitmapContextCreate(void *data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSpaceRef space, uint32_t bitmapInfo);
data
是指向哪块内存用来渲染bitmap的指针。这块内存的大小至少为bytesPerRow
*height
bytes。我们将data
传值NULL
,可以让这个函数自己开辟内存空间,并为我们管理其内存,不需要我们在去手动释放内存。
width
表示bitmap的宽度像素值
height
表示bitmap的高度像素值
bitPerComponent
表示内存中每个像素值的位数
bytesPerRow
表示bitmap的每一行用了内存多少字节。因为前面data
参数传的是NULL
,所以这个参数传0
,让其自动计算
colorspace
是bitmap上下文中用来描述颜色,color space主要有gray,rgb,CMYK,Lab等
bitmapInfo
表示bitmap是否包含一个alpha channel
以及alpha channel
在像素上的相对位置和像素值是浮点数还是整数等bitmap的layout
信息。
bitmapInfo
与color space
有关。具体使用可以查看Quartz 2D Programming Guide 相关章节
最后使用完毕后,别忘了使用CGContenxtRelease()
函数释放内存
CIContext
Core Image上下文
2).流程:
创建CIFilter,调用seDefaults完成对filter的初步设置
//_filter作为属性
_filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[_filter setDefaults]; //如果是在MacOS上,调用完filterWithName创建的CIFilter对象需要调用