macos – 如何更改CIFilter CIQRCodeGenerator过滤器的背景和前景颜色

macos – 如何更改CIFilter CIQRCodeGenerator过滤器的背景和前景颜色,第1张

概述我正在尝试为OS X制作一个QR码生成器,但是我还没有继续制作一个更加丰富多彩的QRCode,黑色和白色我正在使用CIQRCodeGenerator进行CI Image过滤器我将如何制作这个我已经在我的应用程序中实现了一个示例代码: – + (NSImage *)createQRImageForString:(NSString *)string size:(CGSize)size {// Set 我正在尝试为OS X制作一个QR码生成器,但是我还没有继续制作一个更加丰富多彩的QRCode,黑色和白色我正在使用CiqrCodeGenerator进行CI Image过滤器我将如何制作这个我已经在我的应用程序中实现了一个示例代码: –

+ (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过滤器的背景和前景颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1019446.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存