Android ZXing 获取条码图片

标签 android zxing

我正在使用 Zxing 库在我的 Android 应用程序中生成条形码

Intent intent = new Intent("com.google.zxing.client.android.ENCODE");

intent.putExtra("ENCODE_FORMAT", "UPC_A");
intent.putExtra("ENCODE_DATA", "55555555555");

startActivityForResult(intent,0);

是否可以将生成的图像保存在调用 Zxing 的应用程序中?我在我的 onActivityResult 中看到了 Intent null。

提前感谢您的帮助

最佳答案

获取 View 缓存并将其保存在像这样的位图中

View myBarCodeView = view.getRootView()
//Else this might return null
myBarCodeView.setDrawingCacheEnabled(true)
//Save it in bitmap
Bitmap mBitmap = myBarCodeView.getDrawingCache()

或 绘制自己的条形码或二维码

//Change the writers as per your need
private void generateQRCode(String data) {
    com.google.zxing.Writer writer = new QRCodeWriter();
    String finaldata =Uri.encode(data, "ISO-8859-1");
    try {
        BitMatrix bm = writer.encode(finaldata,BarcodeFormat.QR_CODE, 350, 350);
        mBitmap = Bitmap.createBitmap(350, 350, Config.ARGB_8888);
        for (int i = 0; i < 350; i++) {
            for (int j = 0; j < 350; j++) {
                mBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK: Color.WHITE);
            }
        }
    } catch (WriterException e) {
        e.printStackTrace();
    }
    if (mBitmap != null) {
        mImageView.setImageBitmap(mBitmap);
    }
}
public void generateBarCode(String data){
    com.google.zxing.Writer c9 = new Code128Writer();
    try {
        BitMatrix bm = c9.encode(data,BarcodeFormat.CODE_128,350, 350);
        mBitmap = Bitmap.createBitmap(350, 350, Config.ARGB_8888);

        for (int i = 0; i < 350; i++) {
            for (int j = 0; j < 350; j++) {

                mBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK : Color.WHITE);
            }
        }
    } catch (WriterException e) {
        e.printStackTrace();
    }
    if (mBitmap != null) {
        mImageView.setImageBitmap(mBitmap);
    }
}

一旦你得到位图图像就保存它

//create a file to write bitmap data
    File f = new File(FilePath, FileName+".png");
    f.createNewFile();

    //Convert bitmap to byte array
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ImageBitmap.compress(CompressFormat.PNG, 0, bos);
    byte[] bytearray = bos.toByteArray();

    //Write bytes in file
    FileOutputStream fos = new FileOutputStream(f);
    fos.write(bytearray);
    fos.flush();
    fos.close();

您也可以查看 small library from github我为创建条形码或二维码而创建的

GZxingEncoder   Encoder = GZxingEncoder.getInstance();
Encoder.initalize(this);
//To generate bar code use this
Bitmap bitmap = Encoder.generateBarCode_general("some text")

关于Android ZXing 获取条码图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697001/

相关文章:

java - 无法在按钮单击 Android 上显示警报对话框

java - 我正在尝试将方法中的值存储到之前创建的对象中

java - 多个扫描按钮 Zxing

java - fragment 内的简单列表未填充

android - 布局太高的地方未显示 ListView

javascript - 用于智能手机/平板电脑浏览器的 Web 应用程序中的条形码扫描

android - 找不到方法compile()

android - ZXing-2.1 - 缺少库

java - Android 中的纪元时间与 PHP 不同

java - 在 AppEngine Java 上解码二维码