Расшифровка qr-кода из изображения, хранящегося на телефоне, с помощью Zxing (на телефоне Android) - PullRequest
5 голосов
/ 06 августа 2010

У меня есть приложение, которое получает код qr с сервера.Я хочу декодировать его (не с намерением и камерой) и отобразить текст, который он содержит в моем приложении.Я уже сделал это в Java SE с помощью jars от zxing с этим кодом:

 private class QRCodeDecoder {
         public String decode(File imageFile) {
         BufferedImage image;
         try {
         image = ImageIO.read(imageFile);
         } catch (IOException e1) {
         return "io outch";
         }

         // creating luminance source
         LuminanceSource lumSource = new BufferedImageLuminanceSource(image);
         BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(lumSource));

         // barcode decoding
         QRCodeReader reader = new QRCodeReader();

         Result result = null;
         try {
         result = reader.decode(bitmap);
         } catch (ReaderException e) {
         return "reader error";
         }

         return result.getText();

         }
        }

Но на Android BufferedImage не найдено.Кто-нибудь декодировал qr-код на андроид с картинки, хранящейся на телефоне?Tnx.

Ответы [ 3 ]

12 голосов
/ 06 января 2013

В Android вы можете сделать это следующим образом:

    @Override
    protected Result doInBackground(Void... params)
    {
        try
        {
            InputStream inputStream = activity.getContentResolver().openInputStream(uri);
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            if (bitmap == null)
            {
                Log.e(TAG, "uri is not a bitmap," + uri.toString());
                return null;
            }
            int width = bitmap.getWidth(), height = bitmap.getHeight();
            int[] pixels = new int[width * height];
            bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
            bitmap.recycle();
            bitmap = null;
            RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels);
            BinaryBitmap bBitmap = new BinaryBitmap(new HybridBinarizer(source));
            MultiFormatReader reader = new MultiFormatReader();
            try
            {
                Result result = reader.decode(bBitmap);
                return result;
            }
            catch (NotFoundException e)
            {
                Log.e(TAG, "decode exception", e);
                return null;
            }
        }
        catch (FileNotFoundException e)
        {
            Log.e(TAG, "can not open file" + uri.toString(), e);
            return null;
        }
    }
2 голосов
/ 12 июля 2011

Загрузите ZXing из кода Google, и этот файл класса: ZXing-1.6/zxing-1.6/androidtest/src/com/google/zxing/client/androidtest/RGBLuminanceSource.java может помочь вам.

0 голосов
/ 17 февраля 2011

Quickmark и qr droid фактически считывают то, что говорит код, и вы можете декодировать штрих-коды, сохраненные на вашем телефоне.Нажмите кнопку меню, когда загрузите изображение и выберите «Поделиться», найдите «декодировать qr droid» или «Быстрый декодирование декодера», и все получится.Я предпочитаю быструю метку для чтения кодов, потому что она говорит мне, что набрано в коде.

...