二維碼生成

1. 二維碼生成

-(UIImage*)getQrImageWithString:(NSString*)string
{
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    [filter setDefaults];
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    [filter setValue:data forKey:@"inputMessage"];        //通過(guò)kvo方式給一個(gè)字符串,生成二維碼
    [filter setValue:@"H" forKey:@"inputCorrectionLevel"];//設(shè)置二維碼的糾錯(cuò)水平,越高糾錯(cuò)水平越高,可以污損的范圍越大
    
    return [UIImage imageWithCIImage:[filter outputImage]];
}

iOS提供了生成二維碼的方法,但是生成的二維碼圖片是CIImage對(duì)象,因此要轉(zhuǎn)成UIImage對(duì)象。另外特別注意的地方是將image用UIImageview顯示的時(shí)候二維碼模糊的問(wèn)題不是二維碼圖片導(dǎo)致的,而是UIimageview渲染的時(shí)候?qū)е碌?,這個(gè)問(wèn)題可以通過(guò)設(shè)置UIImageview的layer屬性的magnificationFilter屬性值為nearest解決。

2.關(guān)于CIFilter

CIFilter是一個(gè)濾鏡,里面有各種濾鏡,創(chuàng)建方法如下

+ (nullable CIFilter *) filterWithName:(NSString *) name

想要知道filter的name 通過(guò)下面的方法獲取

+ (NSArray<NSString *> *)filterNamesInCategory:(nullable NSString *)category
category的值在這個(gè)方法的說(shuō)明文檔里有就是(就是一些常量字符串)
  1. kCICategoryDistortionEffect //失真效果
  2. kCICategoryGeometryAdjustment //幾何調(diào)整
  3. kCICategoryCompositeOperation //復(fù)合操作
  4. kCICategoryHalftoneEffect //半色調(diào)效果
  5. kCICategoryColorAdjustment //顏色調(diào)整
  6. kCICategoryColorEffect //顏色效果
  7. kCICategoryTransition //翻轉(zhuǎn)
  8. kCICategoryTileEffect //瓦片效果
  9. kCICategoryGenerator //生成器
  10. kCICategoryReduction //削減
  11. kCICategoryGradient //梯度
  12. kCICategoryStylize //風(fēng)格
  13. kCICategorySharpen //銳化
  14. kCICategoryBlur //模糊
  15. kCICategoryVideo //視頻
  16. kCICategoryStillImage //靜態(tài)圖片
  17. kCICategoryInterlaced //交叉
  18. kCICategoryNonSquarePixels //非方形像素
  19. kCICategoryHighDynamicRange //高動(dòng)態(tài)范圍
  20. kCICategoryBuiltIn //內(nèi)建
  21. kCICategoryFilterGenerator //濾鏡生成器
    調(diào)用方法
NSLog(@"catogerys====%@",[CIFilter filterNamesInCategory:kCICategoryGenerator]);
打印結(jié)果為
catogerys====(
    CIAttributedTextImageGenerator,
    CIAztecCodeGenerator,
    CIBarcodeGenerator,
    CICheckerboardGenerator,
    CICode128BarcodeGenerator,
    CIConstantColorGenerator,
    CILenticularHaloGenerator,
    CIMeshGenerator,
    CIPDF417BarcodeGenerator,
    CIQRCodeGenerator,
    CIRandomGenerator,
    CIStarShineGenerator,
    CIStripesGenerator,
    CISunbeamsGenerator,
    CITextImageGenerator
)

獲取到濾鏡的名字之后可以

CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; //生成filter實(shí)例

CIfilter的屬性設(shè)置主要是通過(guò)kvc實(shí)現(xiàn),屬性名的獲取可以通過(guò)只讀屬性inputKeys和outputKeys獲取。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容