一、简介
Googlezxing是一个开源的、多功能的、支持多种平台的条形码/二维码解析库。它基于Java语言编写,可以在Android、iOS、Windows、Linux等多个平台上使用,支持多种编程语言的调用。
Googlezxing提供了丰富的解码能力,支持13种一维条形码和4种二维码的解码,并提供了生成QR代码的功能。此外,它还提供了一些高级功能,如二维码识别时的角度矫正、条形码识别时的多边形扫描等。
二、快速入门
Googlezxing的使用非常方便,只需要引入相关库文件即可。以下以Android平台为例进行介绍。
首先,在build.gradle文件中添加依赖:
dependencies {
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
}
然后在你的Activity中添加如下代码即可启动扫描界面:
public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);// Set the scanner view as the content view
}
@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
mScannerView.startCamera(); // Start camera on resume
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera(); // Stop camera on pause
}
@Override
public void handleResult(Result rawResult) {
// Do something with the result here
Toast.makeText(this, "Contents = " + rawResult.getText() +
", Format = " + rawResult.getBarcodeFormat().toString(), Toast.LENGTH_SHORT).show();
// If you would like to resume scanning, call this method below:
mScannerView.resumeCameraPreview(this);
}
}
以上代码将启动一个相机预览界面,用户可以在该界面扫描条形码/二维码,并将扫描结果返回给handleResult()方法。通过rawResult参数的getText()方法获取扫描结果的文本内容,通过getBarcodeFormat()方法获取扫描结果的类型。
三、高级功能
1. 二维码识别时的角度矫正
在识别二维码时,由于拍照角度的原因,有时会导致二维码呈倾斜状态,从而影响识别效果。Googlezxing提供了角度矫正的功能,可以自动矫正二维码的角度,使其保持正常状态。
以下是示例代码:
// 读取图片文件
Bitmap bitmap = BitmapFactory.decodeFile("/path/to/your/image.png");
// 将图片转换为二进制位图
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
// 将二进制位图解码为二维码
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
QRCodeReader reader = new QRCodeReader();
Result result = reader.decode(binaryBitmap, new Hashtable() {{
put(DecodeHintType.TRY_HARDER, Boolean.TRUE); // 设置优化参数,加强识别效果
put(DecodeHintType.PURE_BARCODE, Boolean.TRUE); // 设置优化参数,只识别纯文本
put(DecodeHintType.ASSUME_GS1, Boolean.TRUE); // 设置优化参数,想象是GS1标准格式
}});
2. 条形码识别时的多边形扫描
在识别条形码时,由于光线、污垢、扭曲等原因,有时会导致识别失败。Googlezxing提供了多边形扫描的功能,可以通过扫描多个角度,找到最优的扫描结果。
以下是示例代码:
// 读取图片文件
Bitmap bitmap = BitmapFactory.decodeFile("/path/to/your/image.png");
// 将图片转换为二进制位图
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int[] pixels = new int[width * height];
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
// 将二进制位图解码为条形码
HybridBinarizer binarizer = new HybridBinarizer(source);
MultipleBarcodeReader reader = new GenericMultipleBarcodeReader(new MultiFormatReader());
Result[] results = reader.decodeMultiple(new BinaryBitmap(binarizer));
// 选取最优结果
Result finalResult = null;
float maxScore = Float.MIN_VALUE;
for (Result result : results) {
float score = result.getBarcodeMetadata().getConfidence();
if (score > maxScore) {
finalResult = result;
maxScore = score;
}
}
3. 生成QR代码
在一些应用场景下,需要生成对应的QR代码。Googlezxing提供了QR代码生成的功能,可以快速生成QR代码图片。
以下是示例代码:
// 生成QR代码
String contents = "Hello, world!";
int width = 300;
int height = 300;
Map hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix matrix = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height, hints);
// 将QR代码转换为图片
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
int offset = y * width;
for (int x = 0; x < width; x++) {
pixels[offset + x] = matrix.get(x, y) ? BLACK : WHITE;
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
// 显示QR代码图片
ImageView imageView = findViewById(R.id.image_view);
imageView.setImageBitmap(bitmap);
四、总结
Googlezxing是一个功能强大、易于使用的条形码/二维码解析库,支持多种平台的使用,并提供了丰富的解码能力和高级功能。通过阅读本文,相信您已经对Googlezxing有了更深入的了解,并可以更加灵活地使用它。
原创文章,作者:SSDMN,如若转载,请注明出处:https://www.506064.com/n/360708.html
微信扫一扫
支付宝扫一扫