バーコードをスキャンするためにZBarSDKforiPhoneを使用しています。リーダーがビュー全体ではなく特定の長方形のみをスキャンするようにしたいのですが、そのためには、リーダーのscanCropプロパティを目的の長方形に設定する必要があります。
設定する必要のある長方形のパラメータを理解するのに苦労しています。
誰かが私に、ポートレートビューでその座標が次のようになる場合、引数としてどのような長方形を与えるべきか教えてもらえますCGRectMake( A, B, C, D )
か?
バーコードをスキャンするためにZBarSDKforiPhoneを使用しています。リーダーがビュー全体ではなく特定の長方形のみをスキャンするようにしたいのですが、そのためには、リーダーのscanCropプロパティを目的の長方形に設定する必要があります。
設定する必要のある長方形のパラメータを理解するのに苦労しています。
誰かが私に、ポートレートビューでその座標が次のようになる場合、引数としてどのような長方形を与えるべきか教えてもらえますCGRectMake( A, B, C, D )
か?
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
付けられた透明なものがある場合。するのではなく:scanView
readerView
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);
わたしにはできる。お役に立てば幸いです。
これにより、スキャンクロップエリアを使用できます。
reader.scanCrop = CGRectMake(x,y,width,height);
たとえば。
reader.scanCrop = CGRectMake(.25,0.25,0.5,0.45);
私はこれを使用し、それが私のために働いた。
来て!!!これは、作付面積を調整する正しい方法です。
私はそれにたくさんの時間を無駄にしていました。
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);
}