一、簡介
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-hant/n/360708.html