Android ZXing Obtener imagen de código de barras
Estoy utilizando la biblioteca de Zxing para generar un código de barras en mi aplicación de 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);
¿Hay de todos modos para guardar la imagen generada en mi aplicación que está llamando a Zxing? Veo que en mi onActivityResult
consigo la intención null.
- ¿Cómo mostrar un código de barras 1-D de cadena en Android?
- PhoneGap BarcodeScanner - ClassNotFound
- Invertir imagen en Nexus 5x en modo vertical
- Zxing Android - ¿Cómo obtener escáner / cámara no en pantalla completa?
- Uso de zxing en Google Glass
Gracias de antemano por tu ayuda
- Integración de la biblioteca de ZXing directamente en mi aplicación de Android
- Cómo obtener un error de cámara en la aplicación de código de barras de Zxing
- Crear un código QR y mostrarlo en ImageView
- Introducción a ZXing en Android
- Cómo utilizar el resultado del escaneo ZXING
- Agregar menú a ZXings barcodescanner, y apretar la vista de superficie
- Escáner de código de barras ZXing en diseño personalizado en fragmento
- Agregue el proyecto android de ZXing como biblioteca en android studio
Tome la caché de vistas y guárdela en bitmap algo como esto
View myBarCodeView = view.getRootView() //Else this might return null myBarCodeView.setDrawingCacheEnabled(true) //Save it in bitmap Bitmap mBitmap = myBarCodeView.getDrawingCache()
O dibuja tu propio código de barras o QR CODE
//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); } }
Una vez que obtenga la imagen de mapa de bits solo guárdela
//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();
También puede comprobar una pequeña biblioteca de github que había creado para crear Código de barras o Código QR
GZxingEncoder Encoder = GZxingEncoder.getInstance(); Encoder.initalize(this); //To generate bar code use this Bitmap bitmap = Encoder.generateBarCode_general("some text")
No se devuelve en el Intent
ahora mismo. No hay manera de conseguirlo. Usted podría sugerir un parche para que sea devuelto – es probablemente un par de días de trabajo. O intente el enfoque de Girish, que es sólo para incrustar la codificación directamente.
Para almacenar la imagen escaneada en ZXing, tiene que sobrescribir un método drawResultPoints en Class CaptureActivity.
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(); }
Esto guardará la imagen escaneada en el directorio raíz de la tarjeta SD, puede personalizarla para guardarla en cualquier carpeta particular que necesite. La imagen que se va a almacenar es la imagen escaneada que aparece como una imagen fantasma mientras escanea.
- Android: cómo poner un signo de interrogación en un recurso de cadena?
- Eclipse no reconocerá el proyecto como biblioteca (ActionBarSherlock / ViewPagerIndicator)