Unity3D

구글 api를 이용한 QR Code 이미지 생성 방법 및 웹페이지 이미지 불러오기

DragonTory 2021. 4. 29. 15:50
반응형

1. 구글 api를 이용한 QR Code 이미지 생성 방법

 

구글 API Url : https://chart.apis.google.com/chart

Parameters

Api 종류 :  cht=qr

QR코드 Size : chs=250x250

QR코드에 넣을 값: chl=url 이나 문자들 같은 QR코드를 스캔 했을 때 읽어지는 값

https://chart.apis.google.com/chart?cht=qr&chs=250x250&chl=https://dragontory.tistory.com/

QR Code를 스캔 해 보세요

 

2.  웹페이지 이미지 불러오기 

 

(HTTP 서버에서 텍스처를 검색해서 가져오기(GET)

www로 텍스처 로드 하기)

 

위에서 만든 QR Code 이미지를 다운로드 해서 게임에 표시 해 보겠습니다. 

UnityWebRequestTexture 와 DownloadHandlerTexture를 이용 하면

간단히 이미지를 다운로드 하고 표시 할 수 있습니다. 

다운로드 된 이미지는 Texture 타입으로

RawImage.texture나 머티리얼의 mainTexture 같은 것에 적용 할 수 있습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
 
using UnityEngine.UI;
 
[RequireComponent(typeof(RawImage))]
public class QRCodeImage : MonoBehaviour
{
    public string QRCodeURL= "https://chart.apis.google.com/chart?cht=qr&chs=250x250&chl=원하는값을넣으세요.";
    public bool IsLoadAtStart = true;
 
    RawImage QRImage;    
 
    // Start is called before the first frame update
    void Start()
    {
        if (IsLoadAtStart)
        {
            Load(QRCodeURL);
        }
    }
 
    public void Load(string qrCodeUrl)
    {
        QRImage = GetComponent<RawImage>();
        StartCoroutine(GetTexture(qrCodeUrl));
    }
 
    IEnumerator GetTexture(string url)
    {
        using (UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(url))
        {
            yield return uwr.SendWebRequest();
            
            //if (uwr.result != UnityWebRequest.Result.Success)     // Unity Version 2020
            if (uwr.isNetworkError || uwr.isHttpError)                
            {
                Debug.Log(uwr.error);
            }
            else
            {
                // Get downloaded asset bundle
                var texture = DownloadHandlerTexture.GetContent(uwr);
                QRImage.texture = texture;            
            }
        }
    }
}
cs

 

반응형