unity制作app(8)--camera拍照

代码如下

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;
using System.IO;

public class CameraText : MonoBehaviour
{
    public WebCamTexture webCamTexture;
    public string savePath = "WebCamImage.png";
    public RawImage rawImage;

    ///IEnumerator Start()
    public void StartC()
    {
        Debug.Log("我是来拍照片的");
        // 启动摄像头
        WebCamDevice[] devices = WebCamTexture.devices;
        WebCamTexture webCam = new WebCamTexture(devices[0].name);
        webCam.wrapMode = TextureWrapMode.Repeat;
        ///renderer.material.mainTexture = webCam;
        webCam.Play();
        Debug.Log("webCam.Play");
        rawImage.texture = webCam;
    }
}

 保存图片到本地

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;
using System.IO;

public class CameraText : MonoBehaviour
{
    public string savePath = "WebCamImage.png";
    public RawImage rawImage;
    WebCamTexture webCam;
    Texture2D mtexture;
    public byte[] data;

    ///IEnumerator Start() <summary>
    /// IEnumerator Start()
    //这个是自己写的
    private Texture2D TextureToTexture2D(Texture texture)
    {
        Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false);
        RenderTexture currentRT = RenderTexture.active;
        RenderTexture renderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 32);
        Graphics.Blit(texture, renderTexture);

        RenderTexture.active = renderTexture;
        texture2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
        texture2D.Apply();

        RenderTexture.active = currentRT;
        RenderTexture.ReleaseTemporary(renderTexture);

        return texture2D;
    }
    public void StopC()
    {
        webCam.Stop();
        Debug.Log("webCam.Stop");
        mtexture = TextureToTexture2D(rawImage.texture);
        mtexture.Apply();
        data = mtexture.EncodeToPNG();
        // 转换Texture2D为PNG并保存到文件
        File.WriteAllBytes(savePath, data);
        Debug.Log("Snapshot saved to: " + savePath);
    }
    /// </summary>
    public void StartC()
    {
        Debug.Log("我是来拍照片的");
        // 启动摄像头
        WebCamDevice[] devices = WebCamTexture.devices;
        //WebCamTexture webCam = new WebCamTexture(devices[0].name);
        webCam = new WebCamTexture(devices[0].name);
        webCam.wrapMode = TextureWrapMode.Repeat;
        ///renderer.material.mainTexture = webCam;
        webCam.Play();
        Debug.Log("webCam.Play");
        rawImage.texture = webCam;
        
    }
}

上传图片,这个需要一套新的协议。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值