コード例 #1
0
        //old method
//		public UIImage GetQRCodeImageByString(string sourceStr,QRCodeCorrectionLevel level = QRCodeCorrectionLevel.H)
//		{
//			CIQRCodeGenerator qrGen = new CIQRCodeGenerator ();
//			qrGen.Message = NSData.FromString (sourceStr);
//			qrGen.CorrectionLevel = level.ToString();
//
//			var output = new CILanczosScaleTransform {
//				Image = qrGen.OutputImage,
//				Scale = 1
//			}.OutputImage;
//
//			var context = CIContext.FromOptions(null);
//			UIImage img = UIImage.FromImage (context.CreateCGImage (output, output.Extent));
//			Console.WriteLine ("output.Extent.Size="+output.Extent.Size);
//			Console.WriteLine ("img.Size="+img.Size);
//			return img;
//		}

        public UIImage GetQRCodeImageByString(string sourceStr, nfloat length, QRCodeCorrectionLevel level = QRCodeCorrectionLevel.M)
        {
            NSString nsStr   = new NSString(sourceStr);
            CIImage  ciImage = CreateQRForString(nsStr, level);

            return(CreateNonInterpolatedUIImageFormCIImage(ciImage, length));
        }
コード例 #2
0
        CIImage CreateQRForString(NSString qrString, QRCodeCorrectionLevel level)
        {
            NSData strData = qrString.Encode(NSStringEncoding.UTF8);
            // 创建filter
            CIFilter qrFilter = CIFilter.FromName("CIQRCodeGenerator");

            // 设置内容和纠错级别
            qrFilter.SetValueForKey(strData, new NSString("inputMessage"));
            qrFilter.SetValueForKey(new NSString(level.ToString()), new NSString("inputCorrectionLevel"));
            // 返回CIImage
            return(qrFilter.OutputImage);
        }