Files
2024-05-26 20:35:16 +08:00

3.6 KiB
Raw Permalink Blame History

Documentation

CreateQRCodeNode 类旨在从文本输入生成 QR 码。它封装了将字符串转换为 QR 码图像的功能,遵循指定的大小、版本、纠错级别、格子大小和边框参数。此节点在创建各种应用中所需的信息的视觉表示形式的 QR 码中扮演着关键角色。

Input types

Required

  • text
    • ‘text’ 参数至关重要,因为它是要编码成 QR 码的信息源。它可以是一个多行字符串,允许包含更复杂的数据。
    • Comfy dtype: STRING
    • Python dtype: str

Optional

  • size
    • ‘size’ 参数决定了 QR 码图像的尺寸。它很重要,因为它影响 QR 码的规模和可读性,默认值设置为确保大小和细节之间的平衡。
    • Comfy dtype: INT
    • Python dtype: int
  • qr_version
    • ‘qr_version’ 参数控制 QR 码的版本,这对应于其纠错能力和数据存储容量。它对于确保 QR 码能够处理所提供的数据量至关重要。
    • Comfy dtype: INT
    • Python dtype: int
  • error_correction
    • ‘error_correction’ 参数设置 QR 码的错误纠正级别。它至关重要,因为它定义了 QR 码对损坏的韧性以及在不同距离下的可读性。
    • Comfy dtype: COMBO['L', 'M', 'Q', 'H']
    • Python dtype: str
  • box_size
    • ‘box_size’ 参数指定 QR 网格中每个盒子的大小。它很重要,因为它影响 QR 码的视觉外观以及扫描 QR 码所需的精度。
    • Comfy dtype: INT
    • Python dtype: int
  • border
    • ‘border’ 参数设置 QR 码周围边框的宽度。它很重要,因为它为 QR 码与其周围区域提供了清晰的界限,增强了其可扫描性。
    • Comfy dtype: INT
    • Python dtype: int

Output types

  • IMAGE
    • ‘IMAGE’ 输出是由输入参数生成的 QR 码图像结果。它很重要,因为它是节点的主要交付物,以视觉格式表示编码的信息。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: CPU

Source code

class CreateQRCodeNode:

    def __init__(self):
        pass

    @classmethod
    def INPUT_TYPES(cls):
        return {'required': {'text': ('STRING', {'multiline': True}), 'size': ('INT', {'default': 512, 'min': 64, 'max': 4096, 'step': 64}), 'qr_version': ('INT', {'default': 1, 'min': 1, 'max': 40, 'step': 1}), 'error_correction': (['L', 'M', 'Q', 'H'], {'default': 'H'}), 'box_size': ('INT', {'default': 10, 'min': 1, 'max': 100, 'step': 1}), 'border': ('INT', {'default': 4, 'min': 0, 'max': 100, 'step': 1})}}
    RETURN_TYPES = ('IMAGE',)
    FUNCTION = 'create_qr_code'
    CATEGORY = 'Masquerade Nodes'

    def create_qr_code(self, text, size, qr_version, error_correction, box_size, border):
        ensure_package('qrcode')
        import qrcode
        if error_correction == 'L':
            error_level = qrcode.constants.ERROR_CORRECT_L
        elif error_correction == 'M':
            error_level = qrcode.constants.ERROR_CORRECT_M
        elif error_correction == 'Q':
            error_level = qrcode.constants.ERROR_CORRECT_Q
        else:
            error_level = qrcode.constants.ERROR_CORRECT_H
        qr = qrcode.QRCode(version=qr_version, error_correction=error_level, box_size=box_size, border=border)
        qr.add_data(text)
        qr.make(fit=True)
        img = qr.make_image(fill_color='black', back_color='white')
        img = img.resize((size, size))
        tensor = torch.from_numpy(np.array(img))
        return (tensor2rgb(tensor.unsqueeze(0)),)