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我的意图为null。

在此先感谢您的帮助

  • 使用ZXing对byte 进行编码和解码
  • 寻找最好的条码扫描仪库,除了zxing
  • 如何整合Zxing条码扫描器而不安装实际的zxing应用程序(无法parsing符号:.android.CaptureActivity)?
  • Android zxing - 人像摄像头预览/ surfaceview拉伸/扭曲
  • Android使用ZXing生成QR码
  • 更新sdk得到zxing的NoClassDefFoundError
  • 如何将ZXing Library集成到Android Studio进行条码扫描?
  • ZXing Android生成一维条码
  • 获取视图缓存并将其保存在类似于此的位图中

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

    或者绘制自己的条形码或QR码

     //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(); 

    您还可以检查我创建的github中的小型库,以创建条形码或QR码

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

    它现在没有在Intent返回。 没有办法得到它。 你可以建议一个补丁让它被退回 – 这可能是几天的工作。 或者尝试Girish的方法,这只是直接嵌入编码。

    要在ZXing中存储扫描图像,您必须覆盖Class CaptureActivity中的方法drawResultPoints。

      String root = Environment.getExternalStorageDirectory().toString(); File myDir = new File(root); myDir.mkdirs(); Random generator = new Random(); int n = 10000; n = generator.nextInt(n); String fname = "Image-"+ n +".jpg"; File file = new File (myDir, fname); if (file.exists ()) file.delete (); try { FileOutputStream out = new FileOutputStream(file); barcode.compress(Bitmap.CompressFormat.JPEG, 90, out); out.flush(); out.close(); } catch (Exception e) { Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); } 

    这会将扫描图像保存在SD卡的根目录中,您可以自定义它以将其保存在您需要的任何特定文件夹中。 它将存储的图像是扫描图像,在扫描时显示为重影图像。