一、簡介
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/zh-hk/n/360708.html
微信掃一掃
支付寶掃一掃