Создать QR-код с номером карты, шириной и высотой - PullRequest
0 голосов
/ 10 июня 2019

Я хочу преобразовать существующий C # QRCodeEncoder код Java. При генерации QR-кодов в C # метод принимает параметры cardNumber, width и length и возвращает QR-код в виде строки. Подпись должна оставаться прежней. Я изучил библиотеку ZXing, но не смог найти подходящий метод. Какую библиотеку мне следует использовать при конвертации в Java?

код C #

private static string generateQRCode(string cardNumber, int width, int height) {
        string result = "";

        QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
        qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;

        int scale = 8;
        try
        {
            if (width / 22 > 8)
                scale = width / 22;

        }
        catch { }
        qrCodeEncoder.QRCodeScale = scale;
        int version = 3;
        qrCodeEncoder.QRCodeVersion = version;

        string errorCorrect = "M";
        if (errorCorrect == "L")
            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
        else if (errorCorrect == "M")
            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
        else if (errorCorrect == "Q")
            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
        else if (errorCorrect == "H")
            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;

        try
        {
            // Convert the image to byte[]
            MemoryStream stream = new MemoryStream();
            qrCodeEncoder.Encode(cardNumber).Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] imageBytes = stream.ToArray();

            // Convert byte[] to Base64 String
            result = Convert.ToBase64String(imageBytes);
        }
        catch (Exception ex) { }
        return result;
}
...