How to generate an Barcode and convert it to Bitmap using new Google Vision API?
Barcode barcode = new Barcode();
Barcode.Email email = new Barcode.Email();
email.address = "[email protected]";
email.subject = "My Subject;
email.body = "My body content.";
barcode.email = email;
//Implement conversion Bitmap barcodeImage = barcodeToBitmap(barcode);// I do know this part.
Below is a step by step look at how to create a barcode in Google Sheets for your online business. 1. Open Google Sheets and start a new spreadsheet 2. Organize your business information into columns (i.e. product name/number, code numbers, customer names, barcodes, etc.) 3. Add your products into the spreadsheet 4.
In this article, I explain how to generate Barcode and after that how to read the bar code. First we need to know what bar code is. What is a barcode? A barcode is a small image of lines (bars) and spaces that is affixed to retail store items, identification cards, and postal mail to identify a particular product number, person, or location.
With ML Kit's barcode scanning API, you can read data encoded using most standard barcode formats. Barcode scanning happens on the device, and doesn't require a network connection. Barcodes are a convenient way to pass information from the real world to your app.
After Completing the barcode reader we create an action method for the reader, After create action method right click and add a view and design. str = "Please upload the bar code Image.";
You can detect your barcodes using Google Vision API and then use ZXing to generate the barcodes. You could try something like this, it uses zxing library:
public static Bitmap getBitmap(String barcode, int barcodeType, int width, int height)
{
Bitmap barcodeBitmap = null;
BarcodeFormat barcodeFormat = convertToZXingFormat(barcodeType);
try
{
barcodeBitmap = encodeAsBitmap(barcode, barcodeFormat, width, height);
}
catch (WriterException e)
{
e.printStackTrace();
}
return barcodeBitmap;
}
private static BarcodeFormat convertToZXingFormat(int format)
{
switch (format)
{
case 8:
return BarcodeFormat.CODABAR;
case 1:
return BarcodeFormat.CODE_128;
case 2:
return BarcodeFormat.CODE_39;
case 4:
return BarcodeFormat.CODE_93;
case 32:
return BarcodeFormat.EAN_13;
case 64:
return BarcodeFormat.EAN_8;
case 128:
return BarcodeFormat.ITF;
case 512:
return BarcodeFormat.UPC_A;
case 1024:
return BarcodeFormat.UPC_E;
//default 128?
default:
return BarcodeFormat.CODE_128;
}
}
/**************************************************************
* getting from com.google.zxing.client.android.encode.QRCodeEncoder
*
* See the sites below
* http://code.google.com/p/zxing/
* http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/encode/EncodeActivity.java
* http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/encode/QRCodeEncoder.java
*/
private static final int WHITE = 0xFFFFFFFF;
private static final int BLACK = 0xFF000000;
private static Bitmap encodeAsBitmap(String contents, BarcodeFormat format, int img_width, int img_height) throws WriterException
{
if (contents == null) {
return null;
}
Map<EncodeHintType, Object> hints = null;
String encoding = guessAppropriateEncoding(contents);
if (encoding != null) {
hints = new EnumMap<>(EncodeHintType.class);
hints.put(EncodeHintType.CHARACTER_SET, encoding);
}
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix result;
try {
result = writer.encode(contents, format, img_width, img_height, hints);
} catch (IllegalArgumentException iae) {
// Unsupported format
return null;
}
int width = result.getWidth();
int height = result.getHeight();
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
int offset = y * width;
for (int x = 0; x < width; x++) {
pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}
private static String guessAppropriateEncoding(CharSequence contents) {
// Very crude at the moment
for (int i = 0; i < contents.length(); i++) {
if (contents.charAt(i) > 0xFF) {
return "UTF-8";
}
}
return null;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With