import
UIKit
class
ViewController
:
UIViewController
{
override
func
viewDidLoad() {
super
.viewDidLoad()
let
imageViewIcon1 =
UIImageView
(frame:
CGRectMake
(20,150,150))
imageViewIcon1.image = createQRForString(
"http://www.hangge.com"
,
qrImageName:
""
)
self
.view.addSubview(imageViewIcon1)
//带图片的二维码图片
imageViewIcon2 =
(frame:
CGRectMake
(200,150))
imageViewIcon2.image = createQRForString(
"logo"
)
.view.addSubview(imageViewIcon2)
}
//创建二维码图片
createQRForString(qrString:
String
?,qrImageName:
?) ->
UIImage
?{
if
sureQRString = qrString {
stringData = sureQRString.dataUsingEncoding(
NSUTF8StringEncoding
allowLossyConversion:
false
)
// 创建一个二维码的滤镜
qrFilter =
CIFilter
(name:
"CIQRCodeGenerator"
)!
qrFilter.setValue(stringData,forKey:
"inputMessage"
)
qrFilter.setValue(
"H"
"inputCorrectionLevel"
)
qrCIImage = qrFilter.outputImage
// 创建一个颜色滤镜,黑白色
colorFilter =
"CIFalseColor"
)!
colorFilter.setDefaults()
colorFilter.setValue(qrCIImage,monospace!important; min-height:auto!important; color:blue!important; background:none!important">"inputImage"
)
colorFilter.setValue(
CIColor
(red: 0,green: 0,blue: 0),monospace!important; min-height:auto!important; color:blue!important; background:none!important">"inputColor0"
)
(red: 1,green: 1,blue: 1),monospace!important; min-height:auto!important; color:blue!important; background:none!important">"inputColor1"
)
// 返回二维码image
codeImage =
(
CIImage
: colorFilter.outputImage!
.imageByApplyingTransform(
CGAffineTransformMakeScale
(5,5)))
// 通常,二维码都是定制的,中间都会放想要表达意思的图片
iconImage =
(named: qrImageName!) {
rect =
(0,codeImage.size.width,codeImage.size.height)
UIGraphicsBeginImageContext
(rect.size)
codeImage.drawInRect(rect)
avatarSize =
CGSizeMake
(rect.size.width * 0.25,rect.size.height * 0.25)
x = (rect.width - avatarSize.width) * 0.5
y = (rect.height - avatarSize.height) * 0.5
iconImage.drawInRect(
(x,y,avatarSize.width,avatarSize.height))
resultImage =
UIGraphicsGetImageFromCurrentImageContext
()
UIGraphicsEndImageContext
()
return
resultImage
}
codeImage
}
return
nil
}
didReceiveMemoryWarning() {
.didReceiveMemoryWarning()
}
}