コードにより生成されたIOS二次元コード

いくつかの単語の男は、コードに直接、言いました

/ **

 * CIImageはUIImageを生成し、指定したサイズによると、

 *

 * @paramイメージCIImage

 * @Paramサイズの画像の幅

 * /

- (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)画像withSize:(CGFloat)サイズ

{

    CGRectエクステント= CGRectIntegral(image.extent)。

    CGFloatscale = MIN(サイズ/ CGRectGetWidth(程度)、サイズ/ CGRectGetHeight(程度))。

    // 1.ビットマップを作成します。

    size_twidth = CGRectGetWidth(程度)*スケール。

    size_theight = CGRectGetHeight(程度)*スケール。

    CGColorSpaceRef CS = CGColorSpaceCreateDeviceGray()。

    CGContextRef bitmapRef = CGBitmapContextCreate(NIL、幅、高さ、8、0、CS、(CGBitmapInfo)kCGImageAlphaNone)。

    CIContext *コンテキスト= [CIContext contextWithOptions:なし]。

    CGImageRefbitmapImage = [contextcreateCGImage:imagefromRect:エクステント]。

    CGContextSetInterpolationQuality(bitmapRef、kCGInterpolationNone)。

    CGContextScaleCTM(bitmapRef、スケール、スケール)。

    CGContextDrawImage(bitmapRef、程度のBitmapImage)。

    // 2.画像にビットマップを保存

    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef)。

    CGContextRelease(bitmapRef)。

    CGImageRelease(のBitmapImage)。

    戻る[UIImage imageWithCGImage:scaledImage];

}

上記のメソッドを呼び出します

//二次元コードのフィルタ1例

    CIFilterの*フィルタ= [CIFilter filterWithName: "CIQRCodeGenerator" @]。

    // 2.フィルタのデフォルトのプロパティを復元

    【filtersetDefaults]。


    3. NSDataのに//文字列

    NSStringの* urlStr = @「http://www.ychpay.com/down.html」; //テスト2次元コードのアドレス、時間のバックオフィスのスタッフとで(2次元コード・サーバーに対処する必要性と、支払うことができない二次元コード)

    NSDataの*データ= [urlStr dataUsingEncoding:NSUTF8StringEncoding]。

    KVOが提供する// 4. inputMessageフィルタデータ

    [filtersetValue:dataforKey:@ "inputMessage"];


    //画像得られたフィルタ出力

    CIImage * outputImage = [filteroutputImage]。


    // 6. UIImage CIImageに変換され、ズーム(この時点で取得された2次元コードが曖昧であり、createNonInterpolatedUIImageFormCIImage二次元コードを再描画する以下の方法を使用することが必要です)

    // UIImage * codeImage = [UIImage imageWithCIImage:outputImageスケール:1.0オリエンテーション:UIImageOrientationUp]。


    UIImageView * wechatImageView = [[UIImageView ALLOC] initWithFrame:CGRectMake(40、30、SCREEN_WIDTH - 80、SCREEN_WIDTH - 80)]。

    wechatImageView.image = [自己createNonInterpolatedUIImageFormCIImage:outputImage withSize:200]; //は、2次元コードを再描画、それが明確に表示されます

    [Self.viewaddSubview:wechatImageView]。

同じように、あなたのURLのURLを置き換えます

ます。https://www.jianshu.com/p/aff05798f13bで再現

おすすめ

転載: blog.csdn.net/weixin_33861800/article/details/91072248