Java源码示例:net.sourceforge.zbar.SymbolSet

示例1
public String scan(byte[] data, int width, int height) {
    if (data == null || width <= 0 || height <= 0) {
        return null;
    }

    Image image = new Image(width, height, "Y800");
    image.setData(data);

    int result = scanner.scanImage(image);

    if (result != 0) {
        SymbolSet syms = scanner.getResults();
        for (Symbol sym : syms) {
            return sym.getData();
        }
    }
    return null;
}
 
示例2
@Override
public ReadableMap decodeRGBBitmap(Bitmap bitmap) {
    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    int[] pixels = new int[width * height];
    bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
    bitmap.recycle();

    Image image = new Image(width, height, ImageFormat.RGB4.toString());
    image.setData(pixels);
    image = image.convert(ImageFormat.Y800.toString());

    WritableMap result = null;
    if (mScanner.scanImage(image) != 0) {
        SymbolSet symbols = mScanner.getResults();
        Symbol symbol = symbols.iterator().next();
        result = Arguments.createMap();
        result.putInt("format", symbolToFormat(symbol.getType()));
        result.putString("content", fixEncoding(symbol.getData()));
    }
    return result;
}
 
示例3
@Override
public WritableMap decodeNV21Data(byte[] data, int width, int height, int rotation) {
    Image image = new Image(width, height, ImageFormat.Y800.toString());
    image.setData(data);

    WritableMap result = null;
    if (mScanner.scanImage(image) != 0) {
        SymbolSet symbols = mScanner.getResults();
        Symbol symbol = symbols.iterator().next();
        result = Arguments.createMap();
        result.putInt("format", symbolToFormat(symbol.getType()));
        result.putString("content", fixEncoding(symbol.getData()));
    }
    image.destroy();
    return result;
}
 
示例4
public String decodeWithZbar(byte[] data, int width, int height, Rect crop) {
    changeZBarDecodeDataMode();

    Image barcode = new Image(width, height, "Y800");
    barcode.setData(data);
    if (null != crop) {
        barcode.setCrop(crop.left, crop.top, crop.width(), crop.height());
    }

    int result = mImageScanner.scanImage(barcode);
    String resultStr = null;

    if (result != 0) {
        SymbolSet syms = mImageScanner.getResults();
        for (Symbol sym : syms) {
            resultStr = sym.getData();
        }
    }

    return resultStr;
}
 
示例5
public String decodeWithZbar(Bitmap bitmap) {
    changeZBarDecodeDataMode();

    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    Image barcode = new Image(width, height, "Y800");

    int size = width * height;
    int[] pixels = new int[size];
    bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
    byte[] pixelsData = new byte[size];
    for (int i = 0; i < size; i++) {
        pixelsData[i] = (byte) pixels[i];
    }

    barcode.setData(pixelsData);

    int result = mImageScanner.scanImage(barcode);
    String resultStr = null;

    if (result != 0) {
        SymbolSet syms = mImageScanner.getResults();
        for (Symbol sym : syms) {
            resultStr = sym.getData();
        }
    }

    return resultStr;
}