CoreController.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using Azure.Storage.Blobs.Models;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Drawing.Imaging;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Text.Json;
  10. using System.Threading.Tasks;
  11. using TEAMModelOS.Models.Request;
  12. using TEAMModelOS.SDK.DI;
  13. using TEAMModelOS.SDK.PngQuant;
  14. namespace TEAMModelOS.Controllers.Core
  15. {
  16. [Route("Core")]
  17. [ApiController]
  18. public class CoreController : ControllerBase
  19. {
  20. private readonly AzureStorageFactory _azureStorage;
  21. public CoreController(AzureStorageFactory azureStorage)
  22. {
  23. _azureStorage = azureStorage;
  24. }
  25. [HttpPost("image-quant")]
  26. public async Task<IActionResult> ImageQuang(List<ImageQuangRequest> request)
  27. {
  28. if (request.Count < 1) return BadRequest();
  29. List<object> respons = new List<object>();
  30. var quantizer = new PngQuantizer();
  31. foreach (var item in request)
  32. {
  33. using var quantized = quantizer.QuantizeImageFromBase64(item.base64, item.width, item.height);
  34. using var ms = new MemoryStream();
  35. quantized.Save(ms, ImageFormat.Png);
  36. byte[] data = ms.ToArray();
  37. string base64 = Convert.ToBase64String(data);
  38. var name = $"{Guid.NewGuid().ToString("N")}.png";
  39. respons.Add(new { base64 = base64, blob = name });
  40. //await _azureStorage.GetBlobContainerClient(item.blob).GetBlobClient(name).UploadAsync(ms, new BlobHttpHeaders { ContentType = "image/png" });
  41. // await _azureStorage.GetBlobContainerClient(item.blob).UploadBlobAsync()
  42. }
  43. return Ok();
  44. }
  45. }
  46. }