Как я могу генерировать QR-код с lo go на Unity3D? - PullRequest
0 голосов
/ 30 января 2020

Я хочу сгенерировать QR-код с lo go, например:

Среда: Unity3D C#

image

I try to write code by examples from Internet.

private Texture2D GenerateBarcode(string data, BarcodeFormat format, int width, int height)
{
        var encodeOptions = new EncodingOptions
        {
            Height = height,
            Width = width,
            Margin = 0,
            PureBarcode = false
        };
        encodeOptions.Hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);

        BarcodeWriter writer = new BarcodeWriter
        {
            Format = BarcodeFormat.QR_CODE,
            Options = encodeOptions
        };

        Color32[] pixels = writer.Write(text);
        Texture2D tex = new Texture2D(width, height);
        tex.SetPixels32(pixels);
        tex.Apply();
        return tex;
}

Q1: Как я могу изменить цвет заливки QR-код с черного на зеленый цвет?

Q2: Как я могу изменить "черные квадраты" по бокам QR-кода на другую похожую фигуру?

Пожалуйста, помогите. Я понятия не имею, что мне нужно.

A1: Ответ от derHu go


    for (var i = 0; i < pixels.Length; i++){
          var pixel = pixels[i];
                if (pixel.r == 0 && pixel.g == 0 && pixel.b == 0)
                {
                    pixel = Color.green;
                }
                else {
                    pixel = Color.white;
                }
                pixels[i] = pixel;
    }

1 Ответ

1 голос
/ 30 января 2020

На первый вопрос: просто переберите пиксели и закрасьте черные вместо зеленого, например

Color32[] pixels = writer.Write(text);

for(var i=0; i<pixels.Length; i++)
{
    var pixel = pixels[i];
    if(pixel.r == 0 && pixel.g == 0 && pixel.b == 0) continue;

    pixel = Color.black;
    pixels[i] = pixel;
}

Texture2D tex = new Texture2D(width, height);
tex.SetPixels32(pixels);
tex.Apply();

На вопрос 2: Есть много похожих вопросов, например, Добавьте пользовательское изображение или текст в QR-код, сгенерированный ZXing. Net или также этот пост по крайней мере для среднего Lo go. Принцип работы с краями будет в основном таким же: перезаписать пиксели в соответствии с пользовательским изображением.

...