Сканирование QR-кода из файла изображения
Попытался использовать несколько библиотек, таких как ZXing, ZBar и их вилки, но не нашел способа сканировать штрих-код не с камеры, а из файла.
Может ли кто-нибудь указать мне правильное направление? Предпочтительно я смотрю в ZXing: как сканировать изображение из файла (не с камеры).
Пожалуйста.
1 ответ:
В конце концов я нашел решение. Код (происходит от здесь):
import com.google.zxing.*; public static String scanQRImage(Bitmap bMap) { String contents = null; int[] intArray = new int[bMap.getWidth()*bMap.getHeight()]; //copy pixel data from the Bitmap into the 'intArray' array bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight()); LuminanceSource source = new RGBLuminanceSource(bMap.getWidth(), bMap.getHeight(), intArray); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Reader reader = new MultiFormatReader(); try { Result result = reader.decode(bitmap); contents = result.getText(); } catch (Exception e) { Log.e("QrTest", "Error decoding barcode", e); } return contents; }
Gradle, ссылающийся на:
dependencies { compile 'com.google.zxing:core:3.2.1' }
Использование:
InputStream is = new BufferedInputStream(new FileInputStream(file)); Bitmap bitmap = BitmapFactory.decodeStream(is); String decoded=scanQRImage(bitmap); Log.i("QrTest", "Decoded string="+decoded);