IOS開發技巧快速產生二維碼

來源:互聯網
上載者:User

標籤:

隨著移動互連網的發展,二維碼應用非常普遍,各大商場,飯店,水果店 基本都有二維碼的身影,那麼ios中怎麼產生二維碼呢? 下面的的程式示範了快速產生二維碼的方法:

在ios裡面要產生二維碼,需要藉助一個架構:#import <CoreImage/CoreImage.h>  所有首先我們需要在我們的項目中引入這個架構

下面是核心代碼:

準備工作:首先在storyboard裡面添加一個UIImageView 然後脫線 到控制器裡面 起名為imageView 然後再控制器的viewDidload裡面寫上如下代碼即可產生二維碼:

//建立過濾器    CIFilter *filter =  [CIFilter filterWithName:@"CIQRCodeGenerator"];        //恢複預設設定    [filter setDefaults];        //添加資料    NSString *str = @"http://www.xianhua.cn";    NSData *data = [str   dataUsingEncoding:NSUTF8StringEncoding];        [filter setValue:data forKeyPath:@"inputMessage"];        //輸出圖片    CIImage *image = [filter outputImage];        //顯示圖片    self.imageView.image = [UIImage imageWithCIImage:image];
   

運行效果如下:

通過上面的簡單代碼就能夠產生一個二維碼了,但是 細心的你 可能會發現 我們通過上面的代碼產生的二維碼 很模糊,給使用者體驗不是很好,這個時候 我們就需要對圖片進行處理了

這裡提供一個方法,是採用位元影像的方式對圖片進行處理的 如果你看不懂沒關係 只需要將其放入到你的項目中即可了,代碼如下:

/** *  根據CIImage產生指定大小的UIImage * *  @param image CIImage *  @param size  圖片寬度 */- (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size{    CGRect extent = CGRectIntegral(image.extent);    CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));        // 1.建立bitmap;    size_t width = CGRectGetWidth(extent) * scale;    size_t height = CGRectGetHeight(extent) * scale;    CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);    CIContext *context = [CIContext contextWithOptions:nil];    CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];    CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);    CGContextScaleCTM(bitmapRef, scale, scale);    CGContextDrawImage(bitmapRef, extent, bitmapImage);        // 2.儲存bitmap到圖片    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);    CGContextRelease(bitmapRef);    CGImageRelease(bitmapImage);        return [UIImage imageWithCGImage:scaledImage];}

有了這個方法之後,接下來我們只需要對我們剛開始的代碼稍稍做一點修改就大工告成了 修改如下:

就修改了一行代碼,然後引入了處理圖片的一個方法,允許效果如下:

看到了吧,是不是比剛開始清晰多了哈, 好了 關於二維碼的產生 就講到這裡了 下一節 我們介紹下 二維碼的掃描

IOS開發技巧快速產生二維碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.