
+ (NSImage *)createQRImageForString:(Nsstring *)string size:(CGSize)size {// Setup the QR filter with our stringCIFilter *filter = [CIFilter filterWithname:@"CiqrCodeGenerator"];[filter setDefaults];NSData *data = [string dataUsingEnCoding:NSUTF8StringEnCoding];[filter setValue:data forKey:@"inputMessage"];CIImage *image = [filter valueForKey:@"outputimage"];// Calculate the size of the generated image and the scale for the desired image sizeCGRect extent = CGRectIntegral(image.extent);CGfloat scale = MIN(size.wIDth / CGRectGetWIDth(extent),size.height / CGRectGetHeight(extent));// Since CoreImage nicely interpolates,we need to create a bitmap image that we'll draw into// a bitmap context at the desired size;size_t wIDth = CGRectGetWIDth(extent) * scale;size_t height = CGRectGetHeight(extent) * scale;CGcolorSpaceRef cs = CGcolorSpaceCreateDeviceRGB();CGContextRef bitmapRef = CGBitmapContextCreate(nil,wIDth,height,8,256*4,cs,(CGBitmAPInfo)kCGImageAlphaPremultiplIEdFirst);#if TARGET_OS_IPHONECIContext *context = [CIContext contextWithOptions:nil];#elseCIContext *context = [CIContext contextWithCGContext:bitmapRef options:nil];#endifCGImageRef bitmAPImage = [context createCGImage:image fromrect:extent];CGContextSetInterpolationQuality(bitmapRef,kCGInterpolationNone);CGContextScaleCTM(bitmapRef,scale,scale);CGContextDrawImage(bitmapRef,extent,bitmAPImage);// Create an image with the contents of our bitmapCGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);// CleanupCGContextRelease(bitmapRef);CGImageRelease(bitmAPImage);return [[NSImage alloc] initWithCGImage:scaledImage size:NSZeroSize];} 那么有人可以指出我正确的方向.
解决方法 这是swift中的一个例子(对于Googlers)func qrCode(from string: String) -> UIImage? { let data = string.data(using: .ascii) // Generate the code image with CIFilter guard let filter = CIFilter(name: "CiqrCodeGenerator") else { return nil } filter.setValue(data,forKey: "inputMessage") // Scale it up (because it is generated as a tiny image) let scale = UIScreen.main.scale let transform = CGAffinetransform(scaleX: scale,y: scale) guard let output = filter.outputimage?.transformed(by: transform) else { return nil } // Change the color using CIFilter let colorParameters = [ "inputcolor0": CIcolor(color: UIcolor.black),// Foreground "inputcolor1": CIcolor(color: UIcolor.clear) // Background ] let colored = output.applyingFilter("CIFalsecolor",parameters: colorParameters) return UIImage(ciImage: colored)} 总结 以上是内存溢出为你收集整理的macos – 如何更改CIFilter CIQRCodeGenerator过滤器的背景和前景颜色全部内容,希望文章能够帮你解决macos – 如何更改CIFilter CIQRCodeGenerator过滤器的背景和前景颜色所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)