9

バーコードをスキャンするためにZBarSDKforiPhoneを使用しています。リーダーがビュー全体ではなく特定の長方形のみをスキャンするようにしたいのですが、そのためには、リーダーのscanCropプロパティを目的の長方形に設定する必要があります。

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

誰かが私に、ポートレートビューでその座標が次のようになる場合、引数としてどのような長方形を与えるべきか教えてもらえますCGRectMake( A, B, C, D )か?

4

3 に答える 3

24

zbarのZBarReaderViewクラスのドキュメントから:

CGRect scanCrop

正規化された画像座標での、スキャンされるビデオ画像の領域。ビデオ画像は横向きモードであることに注意してください(デフォルトは{{0、0}、{1、1}})

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

たとえば、のスキャン領域として名前がUIView付けられた透明なものがある場合。するのではなく:scanViewreaderView

readerView.scanCrop = scanView.frame;

最初にすべての引数を正規化して、これを行う必要があります。

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

わたしにはできる。お役に立てば幸いです。

于 2011-09-10T12:36:08.537 に答える
3

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

于 2013-12-30T14:25:33.940 に答える
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); }

于 2016-09-20T10:55:57.523 に答える