GoogleCloud.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using KdanCommon.GoogleCloud.Data.Vision;
  2. using KdanCommon.Helpers;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Net.Http;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. using Windows.Globalization;
  12. using Windows.Storage;
  13. using Windows.System;
  14. namespace KdanCommon.GoogleCloud
  15. {
  16. public class GoogleCloud
  17. {
  18. public static string VisionDomain = "https://cms.kdanmobile.com";
  19. private Uri _visionImagesUri = null;
  20. private HttpClient _httpClient = null;
  21. private string _key = null;
  22. public GoogleCloud(string key)
  23. {
  24. _key = key;
  25. _httpClient = new HttpClient();
  26. _visionImagesUri = new Uri($"{VisionDomain}/v1/images:annotate");
  27. }
  28. ~GoogleCloud()
  29. {
  30. _httpClient.Dispose();
  31. }
  32. private async Task<ImagesResponse> GetVisionImages(List<StorageFile> images)
  33. {
  34. ImagesResponse response = null;
  35. var base64Contents = new List<string>();
  36. foreach (var image in images)
  37. {
  38. // 最多16張圖
  39. var base64Content = await Base64Helper.StorageFileToBase64(image);
  40. base64Contents.Add(base64Content);
  41. }
  42. var imagesRequest = new ImgesRequest(base64Contents);
  43. string requestJsonStr = JsonConvert.SerializeObject(imagesRequest);
  44. var content = new StringContent(requestJsonStr, System.Text.Encoding.UTF8, "application/json");
  45. var result = await _httpClient.PostAsync(_visionImagesUri, content);
  46. if (result.StatusCode == System.Net.HttpStatusCode.OK)
  47. {
  48. var jsonString = await result.Content.ReadAsStringAsync();
  49. response = JsonTool.DeserializeJSON<ImagesResponse>(jsonString);
  50. }
  51. return response;
  52. }
  53. }
  54. }