Android создает QR-код без пробелов - PullRequest
0 голосов
/ 06 мая 2019

Я использую этот метод для создания QR-кода из текста:

public static Bitmap TextToImageEncode(String Value, int width, int height, Context context) throws WriterException {
    BitMatrix bitMatrix;
    try {
        bitMatrix = new MultiFormatWriter().encode(
                Value,
                BarcodeFormat.DATA_MATRIX.QR_CODE,
                width, height, null
        );

    } catch (IllegalArgumentException Illegalargumentexception) {

        return null;
    }
    int bitMatrixWidth = bitMatrix.getWidth();

    int bitMatrixHeight = bitMatrix.getHeight();

    Log.e("Bit Matrix w, h: ", bitMatrix.getWidth()+" "+ bitMatrixHeight);

    int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];

    for (int y = 0; y < bitMatrixHeight; y++) {
        int offset = y * bitMatrixWidth;

        for (int x = 0; x < bitMatrixWidth; x++) {

            pixels[offset + x] = bitMatrix.get(x, y) ?
                    context.getResources().getColor(R.color.black) : context.getResources().getColor(R.color.white);
        }
    }
    Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444);

    bitmap.setPixels(pixels, 0, 500, 0, 0, bitMatrixWidth, bitMatrixHeight);
    return bitmap;
}

Однако в результате я получаю QR-код с пробелами вокруг него, а поскольку мое приложение имеет темный фон, это создает некоторые проблемы.

Я знаю, что это не проблема макета, потому что я протестировал его, добавив изображение QR-кода непосредственно в мой ImageView . Таким образом, он отлично работает.

Я зарегистрировал высоту и ширину bitMatrix, чтобы увидеть значения, которые они получают, и значения те же (500), что и высота / ширина, которые я указал при вызове метода. Я не понимаю, что происходит.

enter image description here

...