Почему я должен кодировать QR-код в Base64 в HTML, чтобы появился QR-код? - PullRequest
0 голосов
/ 01 июля 2019

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

Код именно здесь, в этой ссылке.https://www.callicoder.com/generate-qr-code-in-java-using-zxing/

Изображение QR-кода HTML-файл

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>This is your QR Code</title>
</head>
<body>
  <img src="/Users/John/Desktop/MyQRCode.png" alt="QR Code">
  </br>
  <img th:src="|data:image/png;base64,${dataUrl}|" />
</body>
</html>

Контроллер

private static final String QR_CODE_IMAGE_PATH = "/Users/John/Desktop/MyQRCode.png";

@GetMapping(path = "/qrCode")
public String qrCode(Model model) {

    try {
        generateQRCodeImage("www.facebook.com", 350, 350, QR_CODE_IMAGE_PATH);
    } catch (WriterException e) {
        System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage());
    } catch (IOException e) {
        System.out.println("Could not generate QR Code, IOException :: " + e.getMessage());
    }

    try {
        byte[] qr = getQRCodeImage("www.facebook.com", 350, 350);
        String encodedStr64 = Base64.encodeBase64String(qr);
        model.addAttribute("dataUrl", encodedStr64);
        model.addAttribute("data", qr);
    } catch (WriterException e) {
        System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage());
    } catch (IOException e) {
        System.out.println("Could not generate QR Code, IOException :: " + e.getMessage());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...