QRCode генерировать в автономном режиме - PullRequest
2 голосов
/ 28 мая 2011

Существует ли библиотека Objective-C, которая позволит мне генерировать QR-коды в автономном режиме?Спасибо

Ответы [ 3 ]

6 голосов
/ 28 мая 2011

См .: https://github.com/jverkoey/ObjQREncoder#readme

Для использования

#import <QREncoder/QREncoder.h>

UIImage* image = [QREncoder encode:@"http://www.google.com/"];
3 голосов
/ 29 мая 2014

В Mavericks и iOS7 генерация QR-кода является частью Core Image.Вы просто используете фильтр CIQRCodeGenerator .На Github вы можете найти класс , который реализует это для iOS.Я адаптировал этот код для получения кода, совместимого с OS X, ниже:

NSString *website = @"http://stackoverflow.com/";
NSData *urlAsData = [website dataUsingEncoding:NSUTF8StringEncoding];

CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[filter setDefaults];

[filter setValue: urlAsData forKey:@"inputMessage"];
[filter setValue:@"M" forKey:@"inputCorrectionLevel"];

CIImage *outputImage = [filter valueForKey:kCIOutputImageKey];

Если вы хотите нарисовать CIImage, есть несколько возможностей.Вы можете создать NSImage следующим образом:

CIContext *context = [[NSGraphicsContext currentContext] CIContext];
CGImageRef cgImage = [context createCGImage:outputImage
                                   fromRect:[outputImage extent]];

NSImage *image = [[NSImage alloc] initWithCGImage:cgImage size:NSZeroSize];

Но это изображение будет намного меньше, чем вы хотите.Я считаю, что каждая черная точка в QR-коде просто становится одним пикселем.Не совсем то, что вы хотите.Чтобы увеличить масштаб изображения, не делая его размытым, сделайте следующее:

NSSize largeSize = NSMakeSize(image.size.width * 10, image.size.height * 10);

[image setScalesWhenResized:YES];
NSImage *largeImage = [[NSImage alloc] initWithSize:largeSize];
[largeImage lockFocus];
[image setSize:largeSize];
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationNone];
[image drawAtPoint:NSZeroPoint fromRect:CGRectMake(0, 0, largeSize.width, largeSize.height) operation:NSCompositeCopy fraction:1.0];
[largeImage unlockFocus];

largeImage - это ваше изображение результата, которое вы можете отобразить.

Если вы хотите декодировать QR, который вы используетеAVFoundation, как объяснено в этом блоге .К сожалению, на данный момент это поддерживается только на iOS7.

0 голосов
/ 12 июля 2017

Простой и удобный способ создания QR-кода:

  • (CIImage *) createQRForString: (NSString *) qrString {

    NSData * stringData = [qrString dataUsingEncoding: NSISOLatin1StringEncoding];

    CIFilter * qrFilter = [CIFilter filterWithName: @ "CIQRCodeGenerator"];

    [qrFilter setValue: inputData forMessage

    ] @ ":* return qrFilter.outputImage;}

...