当前位置:   article > 正文

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

unity 集成七牛sdk

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

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

具体代码参照下面

  1. using LitJson;
  2. using Qiniu.Common;
  3. using Qiniu.Http;
  4. using Qiniu.IO;
  5. using Qiniu.IO.Model;
  6. using Qiniu.JSON;
  7. using Qiniu.Util;
  8. using System.Collections;
  9. using System.Collections.Generic;
  10. using UnityEngine;
  11. public class AnotherJsonSerializer : IJsonSerializer {
  12. // 实现此接口的JSON序列化方法
  13. public string Serialize<T>(T obj) where T : new() {
  14. return JsonMapper.ToJson(obj);
  15. }
  16. }
  17. public class AnotherJsonDeserializer : IJsonDeserializer {
  18. // 实现此接口的JSON反序列化方法
  19. public bool Deserialize<T>(string str, out T obj) where T : new() {
  20. obj = default(T);
  21. bool ok = true;
  22. try {
  23. obj = JsonMapper.ToObject<T>(str);
  24. } catch (System.Exception) {
  25. ok = false;
  26. }
  27. return ok;
  28. }
  29. }
  30. public class QiniuMgr {
  31. public static QiniuMgr m_Instance;
  32. const string AK = "xxx";
  33. const string SK = "xxx";
  34. const string Bucket = "库名";
  35. public static QiniuMgr Instance {
  36. get {
  37. if (m_Instance == null) {
  38. m_Instance = new QiniuMgr();
  39. }
  40. return m_Instance;
  41. }
  42. }
  43. private QiniuMgr() {
  44. JsonHelper.JsonSerializer = new AnotherJsonSerializer();
  45. JsonHelper.JsonDeserializer = new AnotherJsonDeserializer();
  46. // 设置为华南区
  47. ZoneID zoneId = ZoneID.CN_South;
  48. Config.SetZone(zoneId, false);
  49. }
  50. /// <summary>
  51. /// 简单上传-上传字节数据
  52. /// </summary>
  53. public void UploadData(byte[] data, string fileName) {
  54. // 生成(上传)凭证时需要使用此Mac
  55. Mac mac = new Mac(AK, SK);
  56. // 上传策略,参见
  57. // https://developer.qiniu.com/kodo/manual/put-policy
  58. PutPolicy putPolicy = new PutPolicy();
  59. // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
  60. putPolicy.Scope = Bucket + ":" + fileName;
  61. //putPolicy.Scope = Bucket;
  62. // 上传策略有效期(对应于生成的凭证的有效期)
  63. putPolicy.SetExpires(3600);
  64. // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
  65. putPolicy.DeleteAfterDays = 1;
  66. // 生成上传凭证,参见
  67. // https://developer.qiniu.com/kodo/manual/upload-token
  68. string jstr = putPolicy.ToJsonString();
  69. string token = Auth.CreateUploadToken(mac, jstr);
  70. FormUploader fu = new FormUploader();
  71. HttpResult result = fu.UploadData(data, fileName, token);
  72. Debug.Log(result);
  73. }
  74. }

 

生成二维码的方法如下

  1. /// <summary>
  2. /// 用草料生成二维码
  3. /// </summary>
  4. /// <param name="content">扫码二维码后显示的内容</param>
  5. /// <returns></returns>
  6. IEnumerator SpawnQRCode(string content) {
  7. WWW www = new WWW(string.Format("https://cli.im/api/qrcode/code?text={0}&mhid=", content));
  8. yield return www;
  9. string errorMsg = string.Empty;
  10. if (string.IsNullOrEmpty(www.error)) {
  11. //Debug.Log(www.text);
  12. //获取二维码路径
  13. string s = www.text.Substring(www.text.IndexOf("<img src=") + 12, www.text.Length - (www.text.IndexOf("<img src=") + 12));
  14. string result = "http://" + s.Substring(0, s.IndexOf("\""));
  15. www = new WWW(result);
  16. yield return www;
  17. if (string.IsNullOrEmpty(www.error)) {
  18. m_ImgQRCode.gameObject.SetActive(true);
  19. m_ImgQRCode.texture = www.texture;
  20. } else {
  21. Debug.Log(www.error);
  22. }
  23. } else {
  24. Debug.Log(www.error);
  25. }
  26. }

其他主要代码

  1. // 截图
  2. Texture2D screenShot = CaptureScreen(m_Camera, new Rect(134, 109, 1646, 947));
  3. byte[] bytes = screenShot.EncodeToJPG();
  4. // 用时间戳生成文件名,防止cdn缓存
  5. string fileName = "GraphChart" + GetTimeStamp() + ".jpg";
  6. // 把图片上传到七牛存储
  7. QiniuMgr.Instance.UploadData(bytes, fileName);
  8. // 获取二维码 -WarterMaker 是七牛配置的图片下载处理模板,用来个图片加水印还是挺方便的,
  9. // 不过只要去掉-WarterMaker就会没水印了,不是很安全
  10. StartCoroutine(SpawnQRCode("//七牛配置的cdn域名.shenlinjoy.com/" + fileName + "-WarterMaker"));

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/715878
推荐阅读
相关标签
  

闽ICP备14008679号