Как сгенерировать QR-код для строки и предложить его пользователю для скачивания?

Как создать QR-код при нажатии на кнопку, сохранить его как png-изображение и предложить пользователям скачать полученный файл?
  • 31 марта 2024 г. 12:39
Ответы на вопрос 3
Для генерации QR-кода для строки и предложения его пользователю для скачивания, можно воспользоваться библиотекой Python под названием `qrcode`. 

Пример кода для создания QR-кода и его предложения пользователю для скачивания:

```python
import qrcode
from PIL import Image
from io import BytesIO

# Создаем QR-код для строки
data = "Ваша строка здесь"
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data(data)
qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")

# Сохраняем QR-код как изображение PNG
img_path = "./qr_code.png"
img.save(img_path)

# Предлагаем пользователю скачать созданный QR-код
# Это может быть сделано, например, с помощью Flask и отправки файла пользователю
# или простого исполнения скрипта на сервере, откуда пользователь сможет скачать QR-код

print("QR-код создан и сохранен как qr_code.png")
```

После выполнения этого кода, в текущей директории будет создан файл `qr_code.png`, содержащий QR-код для указанной строки. Пользователь сможет скачать этот файл и использовать QR-код по своему усмотрению.
Вы даже не потрудились загуглить пример? Вот надо динамически создать тег a с нужными атрибутами, кликнуть по нему и удалить. 

Обновлено.
И снова я за вас погуглил )) Вот так можно сгенерировать налету и скачать как картинку.
https://codepen.io/yarkovaleksei/pen/OJGOzww?edito...
Делаю для себя одностраничное приложение: 
https://gitverse.ru/NeiroN/HTML/content/main/QRcod...

Пошел по пути Текст->QRcode SVG->тег img->тег canvas->тег a->сохранение

function convertPng(svg,size,name){
let canvas = document.createElement("canvas");canvas.width=size;canvas.height=size;
let img = new Image();img.width=size;img.height=size;
let a = document.createElement("a");a.download=name;
img.onload = function() {canvas.getContext('2d').drawImage(img, 0, 0);a.href=canvas.toDataURL("image/png");a.click();img.remove();canvas.remove();a.remove()}
img.src = "data:image/svg+xml,"+encodeURIComponent(svg);
}

convertPng(new QRCode({
  content: "http://github.com/",
  padding: 4,
  width: 256,
  height: 256,
  color: "#000000",
  background: "#ffffff",
  ecl: "M",
}).svg(),256,'Test.png')

Библиотека когда-то отсюда взята: https://github.com/papnkukn/qrcode-svg
Похожие вопросы