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

在此先感谢您的帮助

Solutions Collecting From Web of "Android ZXing获取条形码图片"

把视图caching,并保存在位图这样的事情

 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上查看我创build的小型图书馆来创build条形码或QR码

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

目前没有在Intent返回。 没有办法得到它。 你可以build议一个补丁,使其返回 – 这可能是几天的工作。 或者尝试Girish的方法,这就是直接embedded编码。

要在ZXing中存储扫描图像,必须在类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卡的根目录中,您可以自定义它以将其保存在任何您需要的特定文件夹中。 它将要存储的图像是在扫描时显示为重影图像的扫描图像。