
Arthur Dent
最近考虑到如何输入图书信息到系统中,发现了条码信息的重要性,所以想使用手机自带的功能来使用。
服务器端使用 C# 和 Python 来使用验证上传的图片。
相对而言 Python 的库比较多,使用起来比较方便。
brew install zbar
依赖性:Fetching dependencies for zbar: jbig2dec, libidn, ghostscript, libde265, shared-mime-info, libheif, liblqr, libomp, libraw and imagemagick
pip install pyzbar
pip install pillow
from pyzbar.pyzbar import decode
from PIL import Image
bar_result = decode(Image.open('book1.jpg'))
if len(barresult) > 0 :
print("find barcode:" + barresult[0].data.decode())
else:
print("can't find barcode!")
using IronBarCode;
var resultFromFile = BarcodeReader.Read(@"book1.jpg");
foreach(var PageReslut in resultFromFile)
{
Console.WriteLine("find barcode is:" + PageReslut.Text);
}
dependencies {
implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
}
package com.guobingyi.barcodedemo
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import com.google.zxing.integration.android.IntentIntegrator
import com.google.zxing.integration.android.IntentResult
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val scanBtn = findViewById<Button>(R.id.scanBarCodeBtn)
scanBtn.setOnClickListener( View.OnClickListener {
val scanner = IntentIntegrator(this)
scanner.initiateScan()
})
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
val result: IntentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
if (result.contents != null) {
// 扫描成功,可以在这里处理结果
val barcode = result.contents
val barCodeTxt = findViewById<TextView>(R.id.barCodeTxt)
barCodeTxt.setText(barcode)
} else {
super.onActivityResult(requestCode, resultCode, data)
}
}
}