У меня есть растровое изображение, в котором мой нижеприведенный код возвращает позиции / координаты точек на изображении следующим образом:
public static void Main()
{
var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("test.png");
byte[] buffer = new byte[resource.Length];
resource.Read(buffer, 0, buffer.Length);
var positions = GetCoordinates(buffer);
}
public static List<Tuple<int, int>> GetCoordinates(byte[] imgData)
{
int HEIGHT = 400;
int WIDTH = 600;
List<Tuple<int, int>> positions = new List<Tuple<int, int>>();
Bitmap bitmap;
using (Stream bmpStream = new MemoryStream(imgData))
{
Image image = Image.FromStream(bmpStream);
bitmap = new Bitmap(image);
}
List<int> knownBlankColors = new List<int>();
knownBlankColors.Add(Color.White.ToArgb());
for (int x = 0; x < HEIGHT; x++)
{
for (int y = 0; y < WIDTH; y++)
{
Color pixelColor = bitmap.GetPixel(x, y);
var code = pixelColor.ToArgb();
if (!knownBlankColors.Contains(code))
positions.Add(new Tuple<int, int>(x, y));
}
}
return positions;
}
это работает хорошо и дает следующие позиции
(114, 33) (114, 34) (114, 35) (114, 36) (114, 37) et c et c
Теперь мой вопрос Я пытаюсь преобразовать вышеуказанный процесс в успокоительный API, чтобы изображение передавалось через почтальона. Это то, что я пытался
[Route("api/[controller]")]
[ApiController]
public class ProcessImageController : ControllerBase
{
public static IWebHostEnvironment _environment;
public ProcessImageController(IWebHostEnvironment environment)
{
_environment = environment;
}
public class FileUploadApi
{
public IFormFile images { get; set; }
}
[HttpPost]
public async Task<string> Post([FromForm]FileUploadApi objImages)
{
try
{
byte[] buffer = new byte[objImages.images.Length];
var positions = GetCoordinates(buffer);
return positions.ToString();
}
catch (Exception ex)
{
return ex.Message.ToString();
}
}
public static List<Tuple<int, int>> GetCoordinates(byte[] imgData)
{
int HEIGHT = 400;
int WIDTH = 600;
List<Tuple<int, int>> positions = new List<Tuple<int, int>>();
Bitmap bitmap;
using (Stream bmpStream = new MemoryStream(imgData))
{
Image image = Image.FromStream(bmpStream);
bitmap = new Bitmap(image);
}
List<int> knownBlankColors = new List<int>();
knownBlankColors.Add(Color.White.ToArgb());
for (int x = 0; x < HEIGHT; x++)
{
for (int y = 0; y < WIDTH; y++)
{
Color pixelColor = bitmap.GetPixel(x, y);
var code = pixelColor.ToArgb();
if (!knownBlankColors.Contains(code))
positions.Add(new Tuple<int, int>(x, y));
}
}
return positions;
}
}
Это правильный способ сделать это? когда я пытаюсь передать изображение от почтальона, он говорит неверный параметр. что я делаю не так?