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 )
?
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:
Wir sollten das tun, indem wir zuerst alle Argumente normalisieren:
%Vor%Es funktioniert für mich. Hoffe das hilft.
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);
}
Tags und Links objective-c iphone ios4 barcode-scanner scanning