美文网首页iOS学习笔记
Swift 生成二维码图片

Swift 生成二维码图片

作者: HeartPower | 来源:发表于2016-10-10 22:25 被阅读194次

网上的各种生成二维码图片的代码,我综合了一下,觉得自己的这个较好一些。直接上代码。
<pre>//生成二维码图片
func generateQRCodeImage(_ content: String, size: CGSize) -> UIImage?
{
// 创建滤镜
guard let filter = CIFilter(name: "CIQRCodeGenerator") else {return nil}
// 还原滤镜的默认属性
filter.setDefaults()
// 设置需要生成的二维码数据
let contentData = content.data(using: String.Encoding.utf8)
filter.setValue(contentData, forKey: "inputMessage")

// 从滤镜中取出生成的图片
guard let ciImage = filter.outputImage else {return nil}

let context = CIContext(options: nil)
let bitmapImage = context.createCGImage(ciImage, from: ciImage.extent)

let colorSpace = CGColorSpaceCreateDeviceGray()
let bitmapContext = CGContext(data: nil, width: Int(size.width), height: Int(size.height), bitsPerComponent: 8, bytesPerRow: 0, space: colorSpace, bitmapInfo: CGImageAlphaInfo.none.rawValue)

//draw image
let scale = min(size.width / ciImage.extent.width, size.height / ciImage.extent.height)
bitmapContext!.interpolationQuality = CGInterpolationQuality.none
bitmapContext?.scaleBy(x: scale, y: scale)
bitmapContext?.draw(bitmapImage!, in: ciImage.extent)

//保存bitmap到图片
guard let scaledImage = bitmapContext?.makeImage() else {return nil}

return UIImage(cgImage: scaledImage)

}
</pre>

传入一个需要生成二维码的字符串和CGsize就会返回一张二维码图片。

相关文章

网友评论

    本文标题:Swift 生成二维码图片

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