namespace Kompas.Mcp.Core.Vision; /// Формат растра для снимка модели (значения ksRasterFormatEnum / ksRasterFormatParam.format). public enum RasterImageFormat : short { Bmp = 0, Gif = 1, Jpg = 2, Png = 3, Tif = 4, Tga = 5, } public static class RasterImageFormats { /// MIME-тип для image-контента MCP. public static string MimeType(this RasterImageFormat format) => format switch { RasterImageFormat.Png => "image/png", RasterImageFormat.Jpg => "image/jpeg", RasterImageFormat.Bmp => "image/bmp", RasterImageFormat.Gif => "image/gif", RasterImageFormat.Tif => "image/tiff", RasterImageFormat.Tga => "image/x-tga", _ => "application/octet-stream", }; /// Расширение файла без точки — постоянная строка без аллокации (в отличие от ToString().ToLower()). public static string FileExtension(this RasterImageFormat format) => format switch { RasterImageFormat.Bmp => "bmp", RasterImageFormat.Gif => "gif", RasterImageFormat.Jpg => "jpg", RasterImageFormat.Png => "png", RasterImageFormat.Tif => "tif", RasterImageFormat.Tga => "tga", _ => format.ToString().ToLowerInvariant(), }; public static RasterImageFormat Parse(string value) => value.Trim().ToLowerInvariant() switch { "png" => RasterImageFormat.Png, "jpg" or "jpeg" => RasterImageFormat.Jpg, "bmp" => RasterImageFormat.Bmp, "gif" => RasterImageFormat.Gif, "tif" or "tiff" => RasterImageFormat.Tif, "tga" => RasterImageFormat.Tga, _ => throw new ArgumentException($"Неизвестный формат растра '{value}'.", nameof(value)), }; }