【发布时间】:2020-09-03 10:42:22
【问题描述】:
我想在android中扫描黑底白字。我用过zxing,它允许我只扫描白底黑字。 我如何扫描和反转条形码或使用哪个库? 感谢您的帮助。
【问题讨论】:
标签: android zxing barcode-scanner zbar
我想在android中扫描黑底白字。我用过zxing,它允许我只扫描白底黑字。 我如何扫描和反转条形码或使用哪个库? 感谢您的帮助。
【问题讨论】:
标签: android zxing barcode-scanner zbar
如果您仍在参考 Journeyapps 嵌入式 zxing 扫描仪,
integrator.addExtra(Intents.Scan.INVERTED_SCAN, true);
【讨论】:
我以这种方式将来自相机预览的byte[] 平庸地反转了
for (int y = 0; y < data.length; y++) {
data[y] = (byte) ~data[y];
}
在将其传递给 ZXing 之前。我有两种支持两种方式,所以我平庸地决定每 n 次反转。它可能效率不高或太聪明,但在我的情况下很简单并且足够好
【讨论】:
IntentIntegrator来扫描倒置的二维码
用这个 sn-p 更新你的代码:
import { BarcodeFormat, HTMLCanvasElementLuminanceSource } from '@zxing/library';
ngOnInit() {
HTMLCanvasElementLuminanceSource.makeBufferFromCanvasImageData = function (canvas) {
var imageData = canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height);
if(localStorage.inverted.toString()==="true"){
for (var i = 0; i < imageData.data.length; i += 4) {
var r = imageData.data[i]; // Red color lies between 0 and 255
var g = imageData.data[i + 1]; // Green color lies between 0 and 255
var b = imageData.data[i + 2]; // Blue color lies between 0 and 255
var a = imageData.data[i + 3]; // Transparency lies between 0 and 255
var invertedRed = 255 - r;
var invertedGreen = 255 - g;
var invertedBlue = 255 - b;
imageData.data[i] = invertedRed;
imageData.data[i + 1] = invertedGreen;
imageData.data[i + 2] = invertedBlue;
}
}
return HTMLCanvasElementLuminanceSource.toGrayscaleBuffer(imageData.data, canvas.width, canvas.height);
};
}
【讨论】: