我使用iPhone的ZBar SDK來掃描條形碼。我希望讀者只掃描特定的矩形而不是整個視圖,因爲需要將讀取器的scanCrop屬性設置爲所需的矩形。如何使用ZBar閱讀器的scanCrop屬性?
我很難理解必須設置的矩形參數。
有人可以告訴我,如果在縱向視圖上它的座標應該是什麼,我應該給出什麼樣的結果:CGRectMake(A, B, C, D)
?
我使用iPhone的ZBar SDK來掃描條形碼。我希望讀者只掃描特定的矩形而不是整個視圖,因爲需要將讀取器的scanCrop屬性設置爲所需的矩形。如何使用ZBar閱讀器的scanCrop屬性?
我很難理解必須設置的矩形參數。
有人可以告訴我,如果在縱向視圖上它的座標應該是什麼,我應該給出什麼樣的結果:CGRectMake(A, B, C, D)
?
從zbar和的ZBarReaderView Class documentation:
的CGRect scanCrop
將被掃描的視頻圖像的區域,在歸一化圖像座標。請注意,視頻圖像處於橫向模式(默認{{0,0},{1,1}})
所有參數的座標都在標準化的float中,該值爲0 - 1因此,在標準化值中,theView.width
是1.0,並且theView.height
是1.0。因此,默認矩形是{{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); }
我希望我能給予好評你兩次,謝謝! – chourobin
如果您的讀者將在縱向而不是風景,請參閱[本文](http://stackoverflow.com/a/11732752/542400) – AMayes