You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.4 KiB
143 lines
3.4 KiB
//using System.Threading;
|
|
|
|
//using UnityEngine;
|
|
|
|
//using ZXing;
|
|
//using ZXing.QrCode;
|
|
|
|
//public class BarcodeCam : MonoBehaviour
|
|
//{
|
|
// // Texture for encoding test
|
|
// public Texture2D encoded;
|
|
|
|
// private WebCamTexture camTexture;
|
|
// private Thread qrThread;
|
|
|
|
// private Color32[] c;
|
|
// private int W, H;
|
|
|
|
// private Rect screenRect;
|
|
|
|
// private bool isQuit;
|
|
|
|
// public string LastResult;
|
|
// private bool shouldEncodeNow;
|
|
|
|
// void OnGUI()
|
|
// {
|
|
// GUI.DrawTexture(screenRect, camTexture, ScaleMode.ScaleToFit);
|
|
// }
|
|
|
|
// void OnEnable()
|
|
// {
|
|
// camTexture = new WebCamTexture(WebCamTexture.devices[0].name, 400, 300);
|
|
// camTexture.Play();
|
|
// if (camTexture != null)
|
|
// {
|
|
// camTexture.Play();
|
|
// W = camTexture.width;
|
|
// H = camTexture.height;
|
|
// }
|
|
// }
|
|
|
|
// void OnDisable()
|
|
// {
|
|
// if (camTexture != null)
|
|
// {
|
|
// camTexture.Pause();
|
|
// }
|
|
// }
|
|
|
|
// void OnDestroy()
|
|
// {
|
|
// qrThread.Abort();
|
|
// camTexture.Stop();
|
|
// }
|
|
|
|
// // It's better to stop the thread by itself rather than abort it.
|
|
// void OnApplicationQuit()
|
|
// {
|
|
// isQuit = true;
|
|
// }
|
|
|
|
// void Start()
|
|
// {
|
|
// encoded = new Texture2D(256, 256);
|
|
// LastResult = "http://www.google.com";
|
|
// shouldEncodeNow = true;
|
|
|
|
// screenRect = new Rect(0, 0, Screen.width, Screen.height);
|
|
|
|
// camTexture = new WebCamTexture();
|
|
// camTexture.requestedHeight = Screen.height; // 480;
|
|
// camTexture.requestedWidth = Screen.width; //640;
|
|
// OnEnable();
|
|
|
|
// qrThread = new Thread(DecodeQR);
|
|
// qrThread.Start();
|
|
// }
|
|
|
|
// void Update()
|
|
// {
|
|
// if (c == null)
|
|
// {
|
|
// c = camTexture.GetPixels32();
|
|
// }
|
|
|
|
// // encode the last found
|
|
// var textForEncoding = LastResult;
|
|
// if (shouldEncodeNow &&
|
|
// textForEncoding != null)
|
|
// {
|
|
// var color32 = Encode(textForEncoding, encoded.width, encoded.height);
|
|
// encoded.SetPixels32(color32);
|
|
// encoded.Apply();
|
|
// shouldEncodeNow = false;
|
|
// }
|
|
// }
|
|
|
|
// void DecodeQR()
|
|
// {
|
|
// // create a reader with a custom luminance source
|
|
// var barcodeReader = new BarcodeReader { AutoRotate = false, TryHarder = false };
|
|
|
|
// while (true)
|
|
// {
|
|
// if (isQuit)
|
|
// break;
|
|
|
|
// try
|
|
// {
|
|
// // decode the current frame
|
|
// var result = barcodeReader.Decode(c, W, H);
|
|
// if (result != null)
|
|
// {
|
|
// LastResult = result.Text;
|
|
// shouldEncodeNow = true;
|
|
// print(result.Text);
|
|
// }
|
|
|
|
// // Sleep a little bit and set the signal to get the next frame
|
|
// Thread.Sleep(200);
|
|
// c = null;
|
|
// }
|
|
// catch
|
|
// {
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// private static Color32[] Encode(string textForEncoding, int width, int height)
|
|
// {
|
|
// var writer = new BarcodeWriter
|
|
// {
|
|
// Format = BarcodeFormat.QR_CODE,
|
|
// Options = new QrCodeEncodingOptions
|
|
// {
|
|
// Height = height,
|
|
// Width = width
|
|
// }
|
|
// };
|
|
// return writer.Write(textForEncoding);
|
|
// }
|
|
//} |