Pertanyaan iOS - Cara men-decode gambar dengan zxing


Saya perlu memecahkan kode gambar QR menggunakan pustaka zxing untuk iOS.

Saya baru dalam pemrograman iOS, dan telah melihat-lihat contoh kode yang disertakan dalam proyek, tetapi saya tidak dapat mencari cara untuk memecahkan kode gambar menggunakan pustaka ini.

Jika ada yang bisa memposting contoh bagaimana saya memecahkan kode gambar itu akan sangat dihargai.

Sejauh ini saya telah mengidentifikasi kelas Decoder, yang memiliki metode yang disebut "decodeImage" yang saya muat dengan gambar. Tetapi metode ini mengembalikan boolean, dan yang saya perlukan adalah string teks yang berisi nilai kode QR.

Terima kasih sebelumnya!


5
2017-10-24 22:37


asal


Jawaban:


Ini adalah kode yang akhirnya memecahkan masalah saya - terima kasih atas bantuan dari smparkes

HEADER FILE

#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

PELAKSANAAN FILE

#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

6
2017-10-25 16:35



Anda perlu membuat kelas / instance delegasi dan mengatur dekoder delegate milik. Maka widget akan memanggil didDecodeImage atau failedToDecodeImage ketika kamu menelepon decodeImage.


5
2017-10-25 13:06