pablohirafuji/elm-qrcode/3.3.0

NOTE: the latest version is 4.0.3

QRCode

QR Code encoding and rendering.

type QRCode

QRCode type.

= Low
| Medium
| Quartile
| High

Error correction level. Provides the following error correction capability:

  • Low: 7% of codewords can be restored.
  • Medium: 15% of codewords can be restored.
  • Quartile: 25% of codewords can be restored.
  • High: 30% of codewords can be restored.

Encoding

encode : String -> Result Error QRCode

Transform a string into a result Error or a QRCode using Quartile ErrorCorrection.

encodeWith : ErrorCorrection -> String -> Result Error QRCode

Transform a string with a given ErrorCorrection into a result Error or a QRCode.

Rendering

toSvg : QRCode -> Html msg

Transform a QRCode into a svg element.

qrCodeView : String -> Html msg
qrCodeView message =
    QRCode.encode message
        |> Result.map QRCode.toSvg
        |> Result.withDefault
            (Html.text "Error while encoding to QRCode.")

Tip: You can determine the size of the generated svg setting width and height styles.

Same as toSvg, but without the quiet zone.

toString : QRCode -> String

Transform a QRCode into a string.

"Hello World!"
    |> QRCode.encode
    |> Result.map QRCode.toString
    |> Result.withDefault "Error while encoding to QRCode."

Returns:

■■■■■■■ ■■■■  ■■■■■■■
■     ■ ■■■■  ■     ■
■ ■■■ ■ ■■■■■ ■ ■■■ ■
■ ■■■ ■ ■   ■ ■ ■■■ ■
■ ■■■ ■ ■■■■  ■ ■■■ ■
■     ■    ■  ■     ■
■■■■■■■ ■ ■ ■ ■■■■■■■
        ■ ■■
 ■■ ■ ■■  ■   ■ ■■■■■
■■ ■■■   ■■■■ ■■■  ■■
 ■ ■■ ■■ ■■■■■ ■■■■■■
 ■■      ■■■■   ■  ■
■  ■ ■■■  ■■■■ ■■
        ■■ ■■■    ■■
■■■■■■■ ■ ■    ■■ ■■■
■     ■  ■  ■  ■    ■
■ ■■■ ■ ■■■     ■
■ ■■■ ■   ■■  ■■■ ■■
■ ■■■ ■ ■ ■ ■ ■ ■ ■ ■
■     ■ ■  ■    ■  ■
■■■■■■■   ■■■  ■   ■■
toImage : QRCode -> Image

Transform a QRCode into an Image. You can transform the Image into a PNG or BMP.

import Html
import Html.Attribute
import Image
import QRCode


viewQRCode : String -> Html msg
viewQRCode message =
    QRCode.encode message
        |> Result.map
            (\qrCode ->
                Html.img
                    [ QRCode.toImage qrCode
                        |> Image.toPngUrl
                        |> Html.Attribute.src
                    ]
                    []
            )
        |> Result.withDefault
            (Html.text "Error while encoding to QRCode.")

Note: You must install the justgook/elm-image package in order to use the functions to convert the Image type to something else:

elm install "justgook/elm-image"
toImageWithOptions : ImageOptions -> QRCode -> Image

Transform a QRCode into an Image with an ImageOptions.

type alias ImageOptions =
{ moduleSize : Int
, moduleColor : Int
, emptyColor : Int
, quietZoneSize : Int
}

Available options to transform a QRCode into an Image with toImageWithOptions.

  • moduleSize is the size of the module (the dark square) in px;
  • moduleColor and emptyColor expects an Int as 0xRRGGBBAA;
  • quietZoneSize is the number of modules the quiet zone should have.
defaultImageOptions : ImageOptions

Default options used by toImage.

defaultImageOptions =
    { moduleSize = 5
    , moduleColor = 0xFF
    , emptyColor = 0xFFFFFFFF
    , quietZoneSize = 4
    }

Extracting

toMatrix : QRCode -> List (List Bool)

Transform a QRCode into a list of list of booleans.

"Hello World!"
    |> QRCode.encode
    |> Result.map QRCode.toMatrix
    |> Result.withDefault "Error while encoding to QRCode."

Error

type Error
= AlignmentPatternNotFound
| InvalidNumericChar
| InvalidAlphanumericChar
| InvalidUTF8Char
| LogTableException Int
| PolynomialMultiplyException
| PolynomialModException
| InputLengthOverflow

Possible encoding errors.