iOS - Как декодировать изображение с помощью ZXING - PullRequest
5 голосов
/ 25 октября 2011

Мне нужно декодировать изображение QR, используя библиотеку zxing для iOS.

Я новичок в программировании на iOS и просматривал примеры кода, включенные в проект, но я не могу понять, как просто декодировать изображение с помощью этой библиотеки.

Если кто-нибудь может, пожалуйста, опубликовать примеры того, как я декодирую изображение, это будет очень цениться.

До сих пор я идентифицировал класс Decoder, у которого есть метод с именем "decodeImage", который я загрузил с изображением.Но этот метод возвращает логическое значение, и мне нужна текстовая строка, содержащая значение QR-кода.

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 25 октября 2011

Это был код, который окончательно решил мою проблему - благодаря помощи smparkes

ФАЙЛ ГОЛОВКИ

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#import "ApplicationConfiguration.h"
#import <ZXingWidgetController.h> 

@interface ScanViewController : UIViewController<DecoderDelegate>
{
    UIButton *scanButton;
}

@property (nonatomic, retain) IBOutlet UIButton *scanButton;
@property (nonatomic, retain ) NSSet *readers;

- (IBAction)doScanAction;
- (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)result;
- (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason;

@end

ФАЙЛ РЕАЛИЗАЦИИ

#import "ScanViewController.h"
#import <ZXingWidgetController.h> 
#import <QRCodeReader.h> 
#import "TwoDDecoderResult.h"

@implementation ScanViewController

@synthesize scanButton;
@synthesize readers;

-(IBAction)doScanAction{
    QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
    self.readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
    [qrcodeReader release];

    Decoder *d = [[Decoder alloc] init];
    [d setDelegate:self];
    [d setReaders:self.readers];
    [readers retain];

    BOOL decodeSuccess= [d decodeImage:[UIImage imageNamed:@"QRcode.png"]];
    NSLog(@"BOOL = %@\n", (decodeSuccess ? @"YES" : @"NO"));
}

- (void)decoder:(Decoder *)decoder didDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset withResult:(TwoDDecoderResult *)result{
    [result retain];
    NSLog(@"Did Decode Image Result: %d",[result text]);
    [result release];
}

- (void)decoder:(Decoder *)decoder failedToDecodeImage:(UIImage *)image usingSubset:(UIImage *)subset reason:(NSString *)reason;
{
    [reason retain];
    NSLog(@"Failed Decode Image Result: %d",reason);
    [reason release];
}

@end
5 голосов
/ 25 октября 2011

Вам необходимо создать класс / экземпляр делегата и установить свойство декодера delegate. Тогда виджет будет звонить didDecodeImage или failedToDecodeImage, когда вы звоните decodeImage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...