Изменение размера / сжатие изображения с CameraSource.takePicture - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в Android Development, поэтому извините, если на этот вопрос уже был дан ответ.У меня есть приложение, где я могу отсканировать QR-код, и камера делает снимок и загружает его на сервер.Это все работает нормально, но у меня проблема с телефонами с высоким разрешением, поэтому время ожидания обрывает соединение, и я продолжаю получать сообщение об ошибке.На некоторых телефонах размер 180 КБ, на других - 2,9 МБ.У меня вопрос, как я могу сказать, я хочу фиксированное разрешение, независимо от разрешения на определенном телефоне?У меня есть следующий код:

cameraSource = new CameraSource
            .Builder(this, barcodeDetector)
            .setRequestedPreviewSize(800, 800)
            .setRequestedFps(30.0f)
            .setAutoFocusEnabled(true)
            .build();

@Override
        public void receiveDetections(Detector.Detections<Barcode> detections) {
            final SparseArray<Barcode> qrcodes = detections.getDetectedItems();
            if (qrcodes.size() != 0 && !qrfound)
            {
                cameraSource.takePicture(null, jpegCallback);
                qrfound = true;
                codeInfo.post(new Runnable() {
                    @Override
                    public void run() {
                        //Create vibrate
                        Vibrator vibrator = (Vibrator)getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
                        vibrator.vibrate(500);
                        codeInfo.setText(qrcodes.valueAt(0).displayValue);
                        hash = qrcodes.valueAt(0).displayValue;

                    }
                });
            }
        }

Изображение преобразуется в строку, используя base64:

jpegCallback = new CameraSource.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] bytes) {

            scannedImage = Base64.encodeToString(bytes, Base64.DEFAULT);
            uploadScannedImage();
        }
    };

В приведенном выше коде я хотел бы что-то, что сжимает размер изображения, ноя не уверен, как я могу это сделать.Я видел похожий пост ( Установите разрешение камеры с помощью Google Vision android ), ответ кажется правдоподобным, но я хочу установить разрешение самостоятельно, чтобы размер оставался минимальным (возможно, до 1 МБ).Может кто-нибудь помочь мне?

...