美文网首页
生成条形码

生成条形码

作者: 番薯大佬 | 来源:发表于2018-08-24 21:10 被阅读25次

代码示例

- (void)click
{
    UIImage *image = [self imageBarcodeWithContent:@"http://www.hao123.com" size:CGSizeMake(200.0, 100.0)];
    
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self.view addSubview:imageView];
    imageView.backgroundColor = [UIColor colorWithWhite:0.2 alpha:0.1];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.frame = CGRectMake((self.view.frame.size.width - 200.0f) / 2, 20.0, 200.0f, 200.0f);
}

示例效果


效果图

功能代码

// 条形码尺寸大小
+ (UIImage *)imageBarcodeWithContent:(NSString *)content size:(CGSize)size
{
    CIFilter *qrFilter = [CIFilter filterWithName:@"CICode128BarcodeGenerator"];
    NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding];
    [qrFilter setValue:contentData forKey:@"inputMessage"];
    [qrFilter setValue:@(0.00) forKey:@"inputQuietSpace"];
    CIImage *image = qrFilter.outputImage;
    
    CGRect integralRect = CGRectIntegral(image.extent);
    CGFloat scale = MIN(size.width / CGRectGetWidth(integralRect), size.height / CGRectGetHeight(integralRect));
    
    size_t width = CGRectGetWidth(integralRect)*scale;
    size_t height = CGRectGetHeight(integralRect)*scale;
    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceGray();
    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, colorSpaceRef, (CGBitmapInfo)kCGImageAlphaNone);
    CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef bitmapImage = [context createCGImage:image fromRect:integralRect];
    CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
    CGContextScaleCTM(bitmapRef, scale, scale);
    CGContextDrawImage(bitmapRef, integralRect, bitmapImage);
    
    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
    CGContextRelease(bitmapRef);
    CGImageRelease(bitmapImage);
    return [UIImage imageWithCGImage:scaledImage];
}

相关文章

网友评论

      本文标题:生成条形码

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