(个人)AR电子书系统创新实训第二周(2)

来源:互联网 发布:最流行的网络用语 编辑:程序博客网 时间:2024/06/06 12:27

打包安卓遇到的问题&测试二维码生成功能

打包安卓

在上一篇报告中我成功地做出了一个简单的二维码识别项目,于是我便尝试将其打包为安卓格式。安卓文件确实顺利地打包出来了,程序也可以运行,但出现了一个意想不到的问题——画面逆时针旋转了90度!
这里写图片描述
我尝试修改了一下打包设置,如果将应用设定为横屏似乎就不会有这个问题,但是我们的应用在设计上应当是竖屏使用的,所以不能固定其方向。所以我决定换一个思路。

首先,我再屏幕组件上加了一个图片组件,并将其长宽设为一致,同时,我将这个图片的渲染角度设为-90度,这样便手动将图像转正了。
这里写图片描述
接着,我再代码中新声明了一个图像变量,将场景中的图片组件赋值给此变量后,我在代码中将原来在OnGUI()中绘制的相机图像给了这个图像变量,这样相机画面便可以显示在图像组件上了。

    void Update () {        if (c == null)        {            c = camTexture.GetPixels32();        }        //原位于OnGUI中的绘制函数被移动到此处        img.canvasRenderer.SetTexture(camTexture);        testText.text = url;    }

运行结果
这里写图片描述

测试二维码生成功能

在第一周的报告里,我已经提到过ZXing.Net中的二维码编码功能,这周,我准备对其进行测试,具体步骤如下:
1.新建一个地图,加入canvas组件和图片组件
2.新建一个C#脚本,脚本内容如下:

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using ZXing;using ZXing.QrCode;public class QRCodeGenerator : MonoBehaviour {    public Image img;    Texture2D encoded;    // Use this for initialization    void Start () {        encoded = new Texture2D(256, 256);        Color32[] color32 = Encode("www.baidu.com", encoded.width, encoded.height);        encoded.SetPixels32(color32);        encoded.Apply();    }    // Update is called once per frame    void Update () {        img.canvasRenderer.SetTexture(encoded);    }    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);    }}

该脚本的Encode函数便是之前提到的生成二维码函数,以字符串和图像长,宽为参数,返回一个颜色矩阵。然后,在Start()函数下调用该函数,这次我给的网址(字符串)是百度主页,把返回的颜色矩阵输入到一个Texture2D对象中,再将此对象赋值给地图中的图片组件中。

运行结果:
这里写图片描述

使用之前的识别软件做一下测试:
这里写图片描述
最下方显示出了解析的文字“www.baidu.com”。

阅读全文
0 0
原创粉丝点击