NetManager.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System;
  5. using BestHTTP;
  6. using BestHTTP.Forms;
  7. using UnityEngine.Events;
  8. namespace MartellController
  9. {
  10. public class NetManager : MonoBehaviour
  11. {
  12. public static NetManager Instance;
  13. // ==================================================
  14. private void Awake()
  15. {
  16. Instance = this;
  17. }
  18. private void Start()
  19. {
  20. Init();
  21. }
  22. // ==================================================
  23. private void Init()
  24. {
  25. return;
  26. }
  27. // ==================================================
  28. public void UploadPicture2RemoveBG(Texture2D value)
  29. {
  30. byte[] bytes = value.EncodeToPNG();
  31. HTTPMultiPartForm form = new HTTPMultiPartForm();
  32. form.AddBinaryData("image_file", bytes);
  33. form.AddField("size", "auto");
  34. form.AddField("type", "person");
  35. HTTPRequest request = new HTTPRequest(
  36. new Uri("https://api.remove.bg/v1.0/removebg"),
  37. HTTPMethods.Post,
  38. UploadPictureCallback);
  39. // 测试key X859F9v3g4YpoPBRQe2n7h8T
  40. // 正式key 76YHaSA8WZYmbZXfqfBeYbqy
  41. request.SetHeader("X-Api-Key", "X859F9v3g4YpoPBRQe2n7h8T");
  42. request.SetForm(form);
  43. request.Send();
  44. return;
  45. }
  46. private void UploadPictureCallback(HTTPRequest httpRequest, HTTPResponse httpResponse)
  47. {
  48. if (httpResponse == null)
  49. {
  50. LogManager.Log("RemoveBG请求无响应...[Error]");
  51. return;
  52. }
  53. if (httpResponse.StatusCode == 200)
  54. {
  55. LogManager.Log("RemoveBG返回成功");
  56. LogManager.Log(httpResponse.DataAsTexture2D.width + " / " + httpResponse.DataAsTexture2D.height);
  57. string fullPath = $"{Application.streamingAssetsPath}/RemoveBGPictures/{DateTime.Now:yyyy-MM-dd-HH-mm-ss}.png";
  58. byte[] bytes = httpResponse.DataAsTexture2D.EncodeToPNG();
  59. System.IO.File.WriteAllBytes(fullPath, bytes);
  60. TestManager.Instance.UpdateRemoveBGPreview(httpResponse.DataAsTexture2D);
  61. }
  62. else
  63. {
  64. LogManager.Log($"RemoveBG返回失败,{httpResponse.StatusCode}");
  65. LogManager.Log(httpResponse.DataAsText);
  66. }
  67. return;
  68. }
  69. }
  70. }