ios two-dimensional code generated by the code

Man of few words said, directly on the code

/**

 * According to the specified size CIImage generated UIImage

 *

 * @param image CIImage

 * @Param size image width

 */

- (UIImage*)createNonInterpolatedUIImageFormCIImage:(CIImage*)image withSize:(CGFloat) size

{

    CGRect extent = CGRectIntegral(image.extent);

    CGFloatscale =MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));

    // 1. Create a bitmap;

    size_twidth =CGRectGetWidth(extent) * scale;

    size_theight =CGRectGetHeight(extent) * scale;

    CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();

    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);

    CIContext *context = [CIContext contextWithOptions:nil];

    CGImageRefbitmapImage = [contextcreateCGImage:imagefromRect:extent];

    CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);

    CGContextScaleCTM(bitmapRef, scale, scale);

    CGContextDrawImage(bitmapRef, extent, bitmapImage);

    // 2. Save the bitmap to the picture

    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);

    CGContextRelease(bitmapRef);

    CGImageRelease(bitmapImage);

    return [UIImage imageWithCGImage:scaledImage];

}

Call the above method

// filter 1. Examples of two-dimensional code

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

    // 2. Restore the default properties of the filter

    [filtersetDefaults];


    3. // string into NSData

    NSString * urlStr = @ "http://www.ychpay.com/down.html"; // test two-dimensional code addresses, times two-dimensional code can not pay, with the need to address two-dimensional code server (with the back office staff with )

    NSData *data = [urlStr dataUsingEncoding:NSUTF8StringEncoding];

    // 4. inputMessage filter data provided by KVO

    [filtersetValue:dataforKey:@"inputMessage"];


    // The image obtained filter output

    CIImage*outputImage = [filteroutputImage];


    // 6. converted into the UIImage CIImage, and zoom (the two-dimensional code acquired at this time is vague, it is necessary to use the following method of redrawing createNonInterpolatedUIImageFormCIImage two-dimensional code)

    //    UIImage *codeImage = [UIImage imageWithCIImage:outputImage scale:1.0 orientation:UIImageOrientationUp];


    UIImageView *wechatImageView = [[UIImageView alloc] initWithFrame:CGRectMake(40, 30, SCREEN_WIDTH - 80, SCREEN_WIDTH - 80)];

    wechatImageView.image = [self createNonInterpolatedUIImageFormCIImage: outputImage withSize: 200]; // redraw two-dimensional code, it appears clear

    [Self.viewaddSubview: wechatImageView];

Just replace your url url like

Reproduced in: https: //www.jianshu.com/p/aff05798f13b

Guess you like

Origin blog.csdn.net/weixin_33861800/article/details/91072248