unity开发截图到七牛并用二维码下载的功能

对接七牛C#SDk v7.2.15-ext-json

sdk下载路径: https://github.com/qiniu/csharp-sdk/releases  ,使用压缩包里的net2.0 dll文件

具体代码参照下面

using LitJson;
using Qiniu.Common;
using Qiniu.Http;
using Qiniu.IO;
using Qiniu.IO.Model;
using Qiniu.JSON;
using Qiniu.Util;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnotherJsonSerializer : IJsonSerializer {
    // 实现此接口的JSON序列化方法
    public string Serialize(T obj) where T : new() {
        return JsonMapper.ToJson(obj);
    }
}

public class AnotherJsonDeserializer : IJsonDeserializer {
    // 实现此接口的JSON反序列化方法
    public bool Deserialize(string str, out T obj) where T : new() {
        obj = default(T);
        bool ok = true;
        try {
            obj = JsonMapper.ToObject(str);
        } catch (System.Exception) {
            ok = false;
        }
        return ok;
    }
}

public class QiniuMgr {
    public static QiniuMgr m_Instance;

    const string AK = "xxx";
    const string SK = "xxx";
    const string Bucket = "库名";

    public static QiniuMgr Instance {
        get {
            if (m_Instance == null) {
                m_Instance = new QiniuMgr();
            }

            return m_Instance;
        }
    }

    private QiniuMgr() {
        JsonHelper.JsonSerializer = new AnotherJsonSerializer();
        JsonHelper.JsonDeserializer = new AnotherJsonDeserializer();

        // 设置为华南区
        ZoneID zoneId = ZoneID.CN_South;
        Config.SetZone(zoneId, false);
    }

    /// 
    /// 简单上传-上传字节数据
    /// 
    public void UploadData(byte[] data, string fileName) {
        // 生成(上传)凭证时需要使用此Mac
        Mac mac = new Mac(AK, SK);
        // 上传策略,参见 
        // https://developer.qiniu.com/kodo/manual/put-policy
        PutPolicy putPolicy = new PutPolicy();
        // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
        putPolicy.Scope = Bucket + ":" + fileName;
        //putPolicy.Scope = Bucket;
        // 上传策略有效期(对应于生成的凭证的有效期)          
        putPolicy.SetExpires(3600);
        // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
        putPolicy.DeleteAfterDays = 1;
        // 生成上传凭证,参见
        // https://developer.qiniu.com/kodo/manual/upload-token            
        string jstr = putPolicy.ToJsonString();
        string token = Auth.CreateUploadToken(mac, jstr);

        FormUploader fu = new FormUploader();
        HttpResult result = fu.UploadData(data, fileName, token);
        Debug.Log(result);
    }
}

 

生成二维码的方法如下

    /// 
    /// 用草料生成二维码
    /// 
    /// 扫码二维码后显示的内容
    /// 
    IEnumerator SpawnQRCode(string content) {
        WWW www = new WWW(string.Format("https://cli.im/api/qrcode/code?text={0}&mhid=", content));
        yield return www;

        string errorMsg = string.Empty;

        if (string.IsNullOrEmpty(www.error)) {
            //Debug.Log(www.text);
            //获取二维码路径
            string s = www.text.Substring(www.text.IndexOf("

其他主要代码

      // 截图  
Texture2D screenShot = CaptureScreen(m_Camera, new Rect(134, 109, 1646, 947));
        byte[] bytes = screenShot.EncodeToJPG();

// 用时间戳生成文件名,防止cdn缓存
        string fileName = "GraphChart" + GetTimeStamp() + ".jpg";

// 把图片上传到七牛存储
        QiniuMgr.Instance.UploadData(bytes, fileName);

// 获取二维码 -WarterMaker 是七牛配置的图片下载处理模板,用来个图片加水印还是挺方便的,
// 不过只要去掉-WarterMaker就会没水印了,不是很安全
        StartCoroutine(SpawnQRCode("//七牛配置的cdn域名.shenlinjoy.com/" + fileName + "-WarterMaker"));

 

你可能感兴趣的:(Unity)