2011-08-07 1 views
8

私はバーコードをスキャンするためにiPhone用のZBar SDKを使用しています。読者が全体のビューではなく特定の矩形だけをスキャンするようにするには、読者のscanCropプロパティを目的の矩形に設定する必要があります。ZBarリーダーのscanCropプロパティを使用するにはどうすればよいですか?

設定する必要があるrectangleパラメータを理解するのに苦労しています。

肖像画を見ると、その座標は:CGRectMake(A, B, C, D)となるでしょうか? zbarのZBarReaderView Class documentationから

答えて

23

CGRect scanCrop

正規化画像は座標において、スキャンされたビデオ画像の領域。

すべての引数の座標は、0から1までの正規化されたfloat型であることに注意してください(デフォルト{{0,0}、{1,1}})したがって、正規化された値では、theView.widthは1.0であり、theView.heightは1.0です。したがって、デフォルトのrectは{{0,0}、{1,1}}です。

たとえば、私がreaderViewのスキャン領域としてscanViewという名前の透明なUIViewを持っているとします。むしろより行います

CGFloat x,y,width,height; 
x = scanView.frame.origin.x/readerView.bounds.size.width; 
y = scanView.frame.origin.y/readerView.bounds.size.height; 
width = scanView.frame.size.width/readerView.bounds.size.width; 
height = scanView.frame.size.height/readerView.bounds.size.height; 

readerView.scanCrop = CGRectMake(x, y, width, height); 

それは私の作品:

readerView.scanCrop = scanView.frame; 

私たちは、最初のすべての引数を正規化し、これを行う必要があります。希望が役立ちます。

+1

私はあなたに2回upvoteして欲しいと思います! – chourobin

+1

あなたの読者が風景の代わりに肖像画になる場合は、[this post](http://stackoverflow.com/a/11732752/542400)を参照してください。 – AMayes

3

これを行うことで、スキャンクロップ領域を使用することができます。 reader.scanCrop = CGRectMake(x,y,width,height); たとえば、 reader.scanCrop = CGRectMake(.25,0.25,0.5,0.45); 私はこれを使用して私のために働いています。

1

これは作物面積を調整する正しい方法です。

私はそれに多くの時間を無駄にしていました。

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); }

関連する問題