生成动态二维码

生成动态二维码

因为最近遇到需要一个生成二维码的功能,于是我就接触了一下,现将我实现的步骤分享一下。

首先需要再网上下载一个生成二维码的三方库 qrencode ,点击二维码生成库下载。里面有提供生成二维码的API,返回 QRcode。

制作二维码的API

注:string:需要编码的字符串内容;version:版本(大小等级1~40);level:容错等级;hint:二维码模式。

实现代码:

新建一个 #import "UIImage+QRCodeGenerator.h";

在 .m 文件里实现

+(UIImage *)QRCodeGenerator:(NSString *)data andQuietZone (NSInteger)iQuietZone andSize:(NSInteger)iSize 

{

       UIImage *ret = nil;

       QRcode *qr = QRcode_encodeString([data      UIT8String]),0,QR_ECLEVEL_M,QR_MODE_8,1);

       NSInteger logQRSize = qr->width;

       NSInteger phyQRSize = logQRSize + (2 * iQuietZone);

       NSInteger scale    = iSize / phyQRSize;

       NSInteger imgSize  = phyQRSize * scale;

      if ( scale < 1 )

         scale = 1;

      {

             UIGraphicsBeginImageContext(CGSizeMake(imgSize,imgSize));

             CGContextRef ctx = UIGraphicsGetCurrentContext();

             CGRect bounds = CGRectMake(0,0,imgSize,imgSize);

             CGContextSetFillColorWithColor(ctx,[UIColor whiteColor].CGColor);

             CGContextFillRect(ctx,bounds);

            // set any 'dark' colour pixels     

           {         

                 int x,y;                 

                CGContextSetFillColorWithColor(ctx,[UIColor blackColor].CGColor);                 

               for ( y=0 ; ydata[(y*logQRSize)+x] & 1 )

              CGContextFillRect(ctx,CGRectMake((iQuietZone+x)*scale,     (iQuietZone+y)*scale,scale,scale));

           }

         // generate the UIImage

        CGImageRef imgRef = CGBitmapContextCreateImage(ctx);

        ret = [UIImage imageWithCGImage:imgRef];

       CGImageRelease(imgRef);

       UIGraphicsEndImageContext();

    }

QRcode_free(qr);

return ret;

   }

}

结果:

你可能感兴趣的:(生成动态二维码)