2016-03-04 85 views
1

QR碼在我的SWIFT 2的應用程序,我可以生成QR碼是這樣的:迅速生成帶有透明背景

let data = "1234567890".dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: false) 
let filter = CIFilter(name: "CIQRCodeGenerator") 
filter!.setValue(data, forKey: "inputMessage") 
filter!.setValue("Q", forKey: "inputCorrectionLevel") 
qrcodeImage = filter!.outputImage 
let transformedImage = qrcodeImage.imageByApplyingTransform(CGAffineTransformMakeScale(150, 150)) 
QRCodeImage.image = UIImage(CIImage: transformedImage) 

但我的QR代碼,獲取一個白色的背景圖像,但我想有一個透明背景。

我想是這樣的:

QRCodeImage.backgroundColor = UIColor.clearColor() 

但這不起作用。 有什麼想法? :)

+0

您可能需要在庫 –

+0

中更改此設置,我該怎麼做? oO – Stack108

+2

http://stackoverflow.com/questions/24210185/how-do-you-change-the-back-and-foreground-color-of-a-cifilter-ciqrcodegenerator –

回答

4

似乎CIQRCodeGenerator過濾器總是使用黑色和白色。

您可以通過輸出到CIMaskToAlpha過濾器將其轉換爲透明:

而且首先你可能想使用CIColorInvert交換白色&黑色。

+0

尼斯挖掘:)(thumbsup) –

+0

偉大的傢伙,但是你知道,一個小小的代碼樣本不會受到傷害! – jlstr

0

我認爲關鍵將在背景的alpha。您可以設置或減少Alpha,減少或刪除透明度。嘗試這樣的:

QRCodeImage.backgroundcolor = UIColor(white: 1, alpha: 0.5) 

希望它有幫助。

+0

sry,但這不起作用 – Stack108

+0

嗯抱歉。 @jtbandes'是一個很好的答案;和相關的,你有一個代碼,可以幫助你對Arun Amayana citates的答案有所幫助:http://stackoverflow.com/a/24211683/3668646 –

+0

問題是,這個解決方案不是一個快速解決方案:( – Stack108

0

爲透明背景,你應該(用你的直覺和)嘗試這樣,

//Create a CIFalseColor Filter 
let colorFilter: CIFilter = CIFilter(name: "CIFalseColor")! 

colorFilter.setDefaults() 

colorFilter.setValue(yourQRFilter.outputImage!, forKey: "inputImage") 

//Then set the background colour like this, 
let transparentBG: CIColor = CIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0) 

colorFilter.setValue(qrColor, forKey: "inputColor0") 

colorFilter.setValue(transparentBG, forKey: "inputColor1") 

outputImage = colorFilter.outputImage! 

這應該得到你QRCode的圖像與透明背景,我希望。