zoukankan      html  css  js  c++  java
  • iOS开发——生成条形码,二维码

    - (void)viewDidLoad {

        [super viewDidLoad];

        

        self.imageView.image = [self generateBarCode:@"1524829417" 60 height:60];

        

        self.imageView2.image = [self generateQRCode:@"1524829417" 60 height:60];

    }

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

        // 生成条形码图片

        CIImage *barcodeImage;

        NSData *data = [code dataUsingEncoding:NSISOLatin1StringEncoding 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];

    }

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

        

        // 生成二维码图片

        CIImage *qrcodeImage;

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

        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];

    }

  • 相关阅读:
    TypeError: Object(…) is not a function
    解决 OSError: [WinError 126] 找不到指定的模块
    LeetCode——和等于 k 的最长子数组长度
    LeetCode——判断子序列
    LeetCode——递增的三元子序列
    LeetCode——字符串相乘
    LeetCode——课程安排 IV
    LeetCode——最小移动次数使数组元素相等
    同源时钟、同相位时钟、同时钟域
    C++ 创建动态二维数组 使用vect<vec> 并初始化为0
  • 原文地址:https://www.cnblogs.com/yyt-hehe-yyt/p/4801555.html
Copyright © 2011-2022 走看看