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>(T obj) where T : new() {
        return JsonMapper.ToJson(obj);
    }
}

public class AnotherJsonDeserializer : IJsonDeserializer {
    // 实现此接口的JSON反序列化方法
    public bool Deserialize<T>(string str, out T obj) where T : new() {
        obj = default(T);
        bool ok = true;
        try {
            obj = JsonMapper.ToObject<T>(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);
    }

    /// <summary>
    /// 简单上传-上传字节数据
    /// </summary>
    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);
    }
}

 

生成二维码的方法如下

    /// <summary>
    /// 用草料生成二维码
    /// </summary>
    /// <param name="content">扫码二维码后显示的内容</param>
    /// <returns></returns>
    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("<img src=") + 12, www.text.Length - (www.text.IndexOf("<img src=") + 12));
            string result = "http://" + s.Substring(0, s.IndexOf("\""));

            www = new WWW(result);
            yield return www;

            if (string.IsNullOrEmpty(www.error)) {
                m_ImgQRCode.gameObject.SetActive(true);
                m_ImgQRCode.texture = www.texture;
            } else {
                Debug.Log(www.error);
            }

        } else {
            Debug.Log(www.error);
        }

    }

其他主要代码

      // 截图  
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"));

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值