有没有一种方法来生成iOS上的QR码图片(Is there a way to generate QR

2019-07-31 02:55发布

有没有生成QR码并将其连接到从iOS的客户端应用程序(服务器代码)的邮件项目的标准方式?

Answer 1:

由于iOS的7,你可以使用一个核心图像过滤器,以生成QR图像。 见这里的最后的技巧 :

- (CIImage *)createQRForString:(NSString *)qrString {
    NSData *stringData = [qrString dataUsingEncoding: NSISOLatin1StringEncoding];

    CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    [qrFilter setValue:stringData forKey:@"inputMessage"];

    return qrFilter.outputImage;
}


Answer 2:

对于对象 - 版本,完美的作品对我来说,我已经混合答案पवन和Teja的库马尔Bethina:

NSString *qrString = @"My string to encode";
NSData *stringData = [qrString dataUsingEncoding: NSUTF8StringEncoding];

CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[qrFilter setValue:stringData forKey:@"inputMessage"];
[qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];

CIImage *qrImage = qrFilter.outputImage;
float scaleX = self.qrImageView.frame.size.width / qrImage.extent.size.width;
float scaleY = self.qrImageView.frame.size.height / qrImage.extent.size.height;

qrImage = [qrImage imageByApplyingTransform:CGAffineTransformMakeScale(scaleX, scaleY)];

self.qrImageView.image = [UIImage imageWithCIImage:qrImage
                                             scale:[UIScreen mainScreen].scale
                                       orientation:UIImageOrientationUp];


Answer 3:

使用斯威夫特2

import UIKit
import CoreImage

func createQRFromString(str: String) -> CIImage? {
    let stringData = str.dataUsingEncoding(NSUTF8StringEncoding)

    let filter = CIFilter(name: "CIQRCodeGenerator")

    filter?.setValue(stringData, forKey: "inputMessage")

    filter?.setValue("H", forKey: "inputCorrectionLevel")

    return filter?.outputImage
}

if let img = createQRFromString("Hello world program created by someone") {
    let somImage = UIImage(CIImage: img, scale: 1.0, orientation: UIImageOrientation.Down)
}

雨燕3.0

import UIKit
import CoreImage

func createQRFromString(_ str: String) -> CIImage? {
        let stringData = str.data(using: String.Encoding.utf8)

        let filter = CIFilter(name: "CIQRCodeGenerator")

        filter?.setValue(stringData, forKey: "inputMessage")

        filter?.setValue("H", forKey: "inputCorrectionLevel")

        if let img = createQRFromString("Hello world program created by someone") {
            let somImage = UIImage(ciImage: img, scale: 1.0, orientation: UIImageOrientation.down)
        }

        return filter?.outputImage
    }

if let img = createQRFromString("Hello world program created by someone") {
            let somImage = UIImage(ciImage: img, scale: 1.0, orientation: UIImageOrientation.down)
        }

雨燕4.2

private func createQRFromString(str: String) -> CIImage? {
        let stringData = str.data(using: .utf8)

        let filter = CIFilter(name: "CIQRCodeGenerator")
        filter?.setValue(stringData, forKey: "inputMessage")
        filter?.setValue("H", forKey: "inputCorrectionLevel")

        return filter?.outputImage
    }

    var qrCode: UIImage? {
        if let img = createQRFromString(str: "Hello world program created by someone") {
            let someImage = UIImage(
                ciImage: img,
                scale: 1.0,
                orientation: UIImage.Orientation.down
            )
            return someImage
        }

        return nil
    }


Answer 4:

它已经有一段时间,因为这个问题被问和一些近乎完美的答案已经被给予。 但是我不得不调整,并结合几个答案得到它使用的Xcode 9.2在2018年这里的代码,如果有人需要它完美地工作了AppleTV的4K,iPhone X和iPadPro。

@IBOutlet weak var qrCodeBox: UIImageView!

func createQRFromString(_ str: String, size: CGSize) -> UIImage {
    let stringData = str.data(using: .utf8)

  let qrFilter = CIFilter(name: "CIQRCodeGenerator")!
  qrFilter.setValue(stringData, forKey: "inputMessage")
  qrFilter.setValue("H", forKey: "inputCorrectionLevel")

  let minimalQRimage = qrFilter.outputImage!
  // NOTE that a QR code is always square, so minimalQRimage..width === .height
  let minimalSideLength = minimalQRimage.extent.width

  let smallestOutputExtent = (size.width < size.height) ? size.width : size.height
  let scaleFactor = smallestOutputExtent / minimalSideLength
  let scaledImage = minimalQRimage.transformed(
    by: CGAffineTransform(scaleX: scaleFactor, y: scaleFactor))

  return UIImage(ciImage: scaledImage, 
                 scale: UIScreen.main.scale, 
                 orientation: .up)
}

override func viewDidLoad() {
    super.viewDidLoad()
    let myQRimage = createQRFromString("https://www.apple.com", 
                      size: qrCodeBox.frame.size)
    qrCodeBox.image = myQRimage
}


Answer 5:

代码在夫特2.0生成QR图像。

let reqStr = “string to convert as QR code”
let data = reqStr.dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: false)

let filter = CIFilter(name: "CIQRCodeGenerator")
filter!.setValue(data, forKey: "inputMessage")

let qrImage:CIImage = filter!.outputImage!

//qrImageView is a IBOutlet of UIImageView        
let scaleX = qrImageView.frame.size.width / qrImage.extent.size.width
let scaleY = qrImageView.frame.size.height / qrImage.extent.size.height

let resultQrImage = qrImage.imageByApplyingTransform(CGAffineTransformMakeScale(scaleX, scaleY))
qrImageView.image = UIImage(CIImage: resultQrImage)


Answer 6:

我已经使用了QR码编码为QR一代。 这是非常容易使用。 还有一些其他的选项来生成,如本 。



Answer 7:

...这将让我产生链接...

首先,你需要找到一个短链接服务,如bit.ly或goo.by ,做一个长链接缩短,从而减少QR码的大小。

要执行此任务自动,你将不得不使用一些网络服务。

......然后生成一个二维码...

斑马线是一个流行的开源QR码生成器还适用于iOS



Answer 8:

如果你不介意使用公共API,这里是一个简单的10秒方法。 http://goqr.me/api

只需填写数据参数,以及从响应加载图像。 干杯。



Answer 9:

我创建了对象 - 一个NSString的类别,以迈克·杰米多夫真棒答案

NString + GGQRCode.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface NSString (GGQRCode)

-(UIImage *)qrCodeImage:(CGFloat)width height:(CGFloat)height;
-(UIImage *)qrCodeImage:(CGFloat)width height:(CGFloat)height scale:(CGFloat)scale orientation:(UIImageOrientation)orientation;

@end

NString + GGQRCode.m

#import "NSString+GGQRCode.h"

@implementation NSString (GGQRCode)

-(UIImage *)qrCodeImage:(CGFloat)width height:(CGFloat)height
{
    return [self qrCodeImage:width height:height scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
}

-(UIImage *)qrCodeImage:(CGFloat)width height:(CGFloat)height scale:(CGFloat)scale orientation:(UIImageOrientation)orientation
{
    NSData *stringData = [self dataUsingEncoding: NSUTF8StringEncoding];

    CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    [qrFilter setValue:stringData forKey:@"inputMessage"];
    [qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];

    CIImage *qrImage = qrFilter.outputImage;
    float scaleX = width / qrImage.extent.size.width;
    float scaleY = height / qrImage.extent.size.height;

    qrImage = [qrImage imageByApplyingTransform:CGAffineTransformMakeScale(scaleX, scaleY)];

    return [UIImage imageWithCIImage:qrImage scale:scale orientation:orientation];
}

@end


文章来源: Is there a way to generate QR code image on iOS
标签: ios qr-code