美文网首页
iOS生成二维码与条形码

iOS生成二维码与条形码

作者: _源计划 | 来源:发表于2016-01-23 15:22 被阅读1587次

    *************************具体方法***************************

    - (UIImage *)generateQRCode:(NSString *)code width:(CGFloat)width height:(CGFloat)height {

    // 生成条形码图片

    CIImage *qrcodeImage;

    NSData *data = [code dataUsingEncoding:NSUTF8StringEncodingallowLossyConversion:false];

    /*dataUsingEncoding可以替换为其他形式,其枚举为:

    typedef NSUInteger NSStringEncoding;

    NS_ENUM(NSStringEncoding) {

    NSASCIIStringEncoding = 1, /* 0..127 only */

    NSNEXTSTEPStringEncoding = 2,

    NSJapaneseEUCStringEncoding = 3,

    NSUTF8StringEncoding = 4,

    NSISOLatin1StringEncoding = 5,

    NSSymbolStringEncoding = 6,

    NSNonLossyASCIIStringEncoding = 7,

    NSShiftJISStringEncoding = 8,          /* kCFStringEncodingDOSJapanese */

    NSISOLatin2StringEncoding = 9,

    NSUnicodeStringEncoding = 10,

    NSWindowsCP1251StringEncoding = 11,    /* Cyrillic; same as AdobeStandardCyrillic */

    NSWindowsCP1252StringEncoding = 12,    /* WinLatin1 */

    NSWindowsCP1253StringEncoding = 13,    /* Greek */

    NSWindowsCP1254StringEncoding = 14,    /* Turkish */

    NSWindowsCP1250StringEncoding = 15,    /* WinLatin2 */

    NSISO2022JPStringEncoding = 21,        /* ISO 2022 Japanese encoding for e-mail */

    NSMacOSRomanStringEncoding = 30,

    NSUTF16StringEncoding = NSUnicodeStringEncoding,      /* An alias for NSUnicodeStringEncoding */

    NSUTF16BigEndianStringEncoding = 0x90000100,          /* NSUTF16StringEncoding encoding with explicit endianness specified */

    NSUTF16LittleEndianStringEncoding = 0x94000100,      /* NSUTF16StringEncoding encoding with explicit endianness specified */

    NSUTF32StringEncoding = 0x8c000100,

    NSUTF32BigEndianStringEncoding = 0x98000100,          /* NSUTF32StringEncoding encoding with explicit endianness specified */

    NSUTF32LittleEndianStringEncoding = 0x9c000100        /* NSUTF32StringEncoding encoding with explicit endianness specified */

    };

    二维码生成时,此处也可以替换*/

    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

    [filter setValue:data forKey:@"inputMessage"];

    [filter setValue:@"H" forKey:@"inputCorrectionLevel"];

    qrcodeImage = [filter outputImage];

    // 消除模糊

    CGFloat scaleX = width / qrcodeImage.extent.size.width; // extent 返回图片的frame

    CGFloat scaleY = height / qrcodeImage.extent.size.height;

    CIImage *transformedImage = [qrcodeImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, scaleX, scaleY)];

    return [UIImage imageWithCIImage:transformedImage];

    }

    - (UIImage *)generateBarCode:(NSString *)code width:(CGFloat)width height:(CGFloat)height {

    // 生成二维码图片

    CIImage *barcodeImage;

    NSData *data = [code dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:false];

    CIFilter *filter = [CIFilter filterWithName:@"CICode128BarcodeGenerator"];

    [filter setValue:data forKey:@"inputMessage"];

    barcodeImage = [filter outputImage];

    // 消除模糊

    CGFloat scaleX = width / barcodeImage.extent.size.width; // extent 返回图片的frame

    CGFloat scaleY = height / barcodeImage.extent.size.height;

    CIImage *transformedImage = [barcodeImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, scaleX, scaleY)];

    return [UIImage imageWithCIImage:transformedImage];

    }


    **********************使用方法******************************

    UIImageView *txmImage=[[UIImageView alloc]init];

    txmImage.frame=CGRectMake(10, 10, WIDTH-20, 60);

    txmImage.image=[self generateBarCode:@"tiaoxingma" width:txmImage.frame.size.width height:txmImage.frame.size.height];

    [self.view addSubview:txmImage];

    UIImageView *ewmImage=[[UIImageView alloc]init];

    ewmImage.frame=CGRectMake(WIDTH/4, 80, WIDTH/2, WIDTH/2);

    ewmImage.image=[self generateQRCode:@"erweima" width:ewmImage.frame.size.width height:ewmImage.frame.size.height];

    [self.view addSubview:ewmImage];

    相关文章

      网友评论

          本文标题:iOS生成二维码与条形码

          本文链接:https://www.haomeiwen.com/subject/iujrkttx.html