1
我們正在開發Android應用程序並使用ZXing掃描QR碼。有沒有辦法使用ZXing獲得全幀解碼QR碼?在Android上使用ZXing全屏訪問
以下方法被添加到PlanarYUVLuminanceSource
類。
public void saveFrame() {
try {
YuvImage image = new YuvImage(yuvData, ImageFormat.NV21, getWidth(), getHeight(), null);
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/frame.jpeg");
FileOutputStream fos = new FileOutputStream(file);
image.compressToJpeg(new Rect(0, 0, image.getWidth(), image.getHeight()), 100, fos);
} catch (FileNotFoundException e) {
Log.e(TAG, "FileNotFoundException!");
}
}
如下DecodeHandler
類中調用,
private void decode(byte[] data, int width, int height) {
long start = System.currentTimeMillis();
Result rawResult = null;
PlanarYUVLuminanceSource source = CameraManager.get()
.buildLuminanceSource(data, width, height);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
try {
rawResult = multiFormatReader.decodeWithState(bitmap);
} catch (ReaderException re) {
// continue
} finally {
multiFormatReader.reset();
}
if (rawResult != null) {
// Don't log the barcode contents for security.
long end = System.currentTimeMillis();
Log.d(TAG, "Found barcode in " + (end - start) + " ms");
Message message = Message.obtain(activity.getHandler(),
R.id.zxinglib_decode_succeeded, rawResult);
Bundle bundle = new Bundle();
bundle.putParcelable(DecodeThread.BARCODE_BITMAP,
source.renderCroppedGreyscaleBitmap());
source.saveFrame();
message.setData(bundle);
message.sendToTarget();
} else {
Message message = Message.obtain(activity.getHandler(),
R.id.zxinglib_decode_failed);
message.sendToTarget();
}
}
下面是結果圖像,
喜,茅,如果調用renderGrayScaleBitmap(),灰度圖像將被保存,這是你的通緝的結果?我想使用yuv數據的一部分,而不需要從顏色變爲灰度數據,然後將這些數據發送給zxing來處理。換句話說,我只是想使用原始數據。你知道怎麼做了感謝 – mmm2006
我的代碼:?YuvImage yuvImage =新YuvImage(source.getMatrix(), \t \t \t \t \t ImageFormat.NV21,source.getWidth(),source.getHeight(), \t \t \t \t \t null); ByteArrayOutputStream baos = new ByteArrayOutputStream(); \t \t \t yuvImage.compressToJpeg( \t \t \t \t \t新的矩形(0,0,source.getWidth(), – mmm2006
所有結果就像你第一次保存的圖像。許多綠色帶。我不知道原因。你能幫我解釋一下嗎?謝謝。 – mmm2006