Wie verwende ich die scanCrop-Eigenschaft eines ZBar-Readers?

8

Ich verwende das ZBar SDK für iPhone, um einen Barcode zu scannen. Ich möchte, dass der Leser nur ein bestimmtes Rechteck statt der gesamten Ansicht scannt. Dazu muss die Eigenschaft scanCrop des Readers auf das gewünschte Rechteck gesetzt werden.

Mir fällt es schwer, den Rechteckparameter zu verstehen, der gesetzt werden muss.

Kann mir bitte jemand sagen, was ich als Argument angeben soll, wenn im Hochformat seine Koordinaten lauten würden: CGRectMake( A, B, C, D ) ?

    
Sagiftw 07.08.2011, 02:33
quelle

3 Antworten

23

Aus der Dokumentation der ZBarReaderView-Klasse der zbar:

  

CGRect scanCrop

     

Der Bereich des Videobildes, der gescannt wird, in normalisierten Bildkoordinaten . Beachten Sie, dass das Videobild im Querformat ist (Standard {{0, 0}, {1, 1}})

Die Koordinaten für alle Argumente befinden sich in einem normalisierten Fließkommawert von 0 - 1. Im normalisierten Wert ist theView.width also 1.0 und theView.height ist 1.0. Daher ist das Standard-Rect {{0,0}, {1,1}}.

Also zum Beispiel, wenn ich eine transparente UIView namens scanView als Scan-Region für meine readerView habe. Anstatt zu tun:

%Vor%

Wir sollten das tun, indem wir zuerst alle Argumente normalisieren:

%Vor%

Es funktioniert für mich. Hoffe das hilft.

    
Ikhsan Assaat 10.09.2011, 12:36
quelle
3

Sie können den Scan-Ausschnitt verwenden, indem Sie dies tun. %Code% für z. %Code% Ich habe das und seine Funktion für mich benutzt.

    
Pravin 30.12.2013 14:25
quelle
1

Komm schon !!! Dies ist der richtige Weg, um den Schnittbereich anzupassen;

Ich hatte Tonnen von Zeit darauf verschwendet;

readerView.scanCrop = [self getScanCrop:cropRect readerViewBounds:contentView.bounds]; - (CGRect)getScanCrop:(CGRect)rect readerViewBounds:(CGRect)rvBounds{ CGFloat x,y,width,height; x = rect.origin.y / rvBounds.size.height; y = 1 - (rect.origin.x + rect.size.width) / rvBounds.size.width; width = rect.size.height / rvBounds.size.height; height = rect.size.width / rvBounds.size.width; return CGRectMake(x, y, width, height); }

    
Zhiping Yang 20.09.2016 10:55
quelle