RBGLuminanceSource .toString выдает ошибку StackOverflowError, когда размеры изображения большие

#java #qr-code #zxing

#java #qr-код #zxing

Вопрос:

Я не могу понять, почему я получаю StackOverflowError. Я пытаюсь создать растровое изображение из изображения для сканирования QR-кода. источник из метода decode () строится стандартным способом:

 if (bitmap != null) {
      int[] intArray = new int[bitmap.getWidth() * bitmap.getHeight()];
      bitmap.getPixels(intArray, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
      return new RGBLuminanceSource(bitmap.getWidth(), bitmap.getHeight(), intArray);
  

И чем decode() выдает ошибку:
источник: Метод вызвал исключение ‘java.lang’StackOverflowError’. Не удается оценить com.google.zxing.RGBLuminanceSource .toString()

 private QRCodeMultiReader qrCodeReader;
      
public void decode(LuminanceSource source, ScannerResultListener resultListener) {
        try {
          BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
          String decodedContent = qrCodeReader.decode(bitmap, hints).getText();
          Timber.d("qr code scanner has successfully decoded content: [%s]", decodedContent);
          resultListener.onScanningSuccess(decodedContent);
        } catch (ReaderException re) {
          Timber.d(re.getMessage(), "qr code scanner can not decode code");
          resultListener.onScanningFailure();
        } finally {
          qrCodeReader.reset();
        }
      }
  

Это происходит только тогда, когда я загружаю изображение с большими размерами (например, 1242×2688 пикселей). Когда я уменьшаю размер загруженного изображения до высоты, например, 2160 пикселей, все в порядке., и изображение сканируется правильно.
Я ничего не могу найти об ограничениях размера zxing.

Кто-нибудь знает, почему это так?

Комментарии:

1. Можете ли вы предоставить полную дорожку стека и полный код decode() . SOE часто вызываются циклическими вызовами, метод A вызывает метод B, который вызывает метод A как экземпляр.

Ответ №1:

Проблема решена. Мне пришлось обновить библиотеки Zxing до более новой версии. В моей проблеме было достаточно 3.3.1. Но для более новых библиотек требуется SDK 19 .