Как преобразовать TIFF в png / jpg во время выполнения и отобразить его в Asp.Net Core? - PullRequest
0 голосов
/ 20 октября 2019

Я использую Asp.Net Core 3.0, и мне нужно преобразовать строку TIFF в PNG / JPG изображение в время выполнения и дисплей это но я решил эту проблемуArgumentException: Parameter is not valid. System.Drawing.Image.FromStream(Stream stream, bool useEmbeddedColorManagement, bool validateImageData)

Первый: Что я сделал,

  1. Я прочитал строку TIFF из XML-файла, как показано в приведенном ниже коде

[HttpGet]

public async Task<IActionResult> ReadData()
{
   XmlDocument document = new XmlDocument();
   document.Load(@"Location In the Computer\MyFile.xml");
   XmlNodeList sign = document.GetElementsByTagName("sign");
   byte[] buffer = Encoding.ASCII.GetBytes(sign.Item(0).InnerText);
   ViewBag.Sign = ConvertTiffToImage(buffer); //This method convert tiff to png/jpg
   return View("Create");
}

Я использовал метод ConvertTiffToImage для преобразования строки tiff в изображение png / jpg, как показано в приведенном ниже коде

private string ConvertTiffToImage(byte[] tiffBytes)
{
    //Read the tiff and convert to png
    MemoryStream ms = new MemoryStream(tiffBytes);
    MemoryStream newMS = new MemoryStream();
    Bitmap.FromStream(ms).Save(newMS, ImageFormat.Png); //Error come here

    //Read the converted memorystream and insert it to string to display
    StreamReader reader = new StreamReader(newMS);
    string pngImage = reader.ReadToEnd();
    return pngImage;
}

Я пытался отобразитьИзображение с использованием ViewBag, как показано ниже в коде

@if (ViewBag.Sign == null)
{
   <img src="~/Images/NoSignature.png" class="rounded" alt="No Signature Found for Emirates Id" />
}
else
{
   <img src="data:image/png;base64,@ViewBag.Sign" class="rounded" alt="Signature in Emirates Id" />
}
Я отладил свое приложение и ошибка, возникшая в этой точке Bitmap.FromStream(ms).Save(newMS, ImageFormat.Png);, отображается ошибка ArgumentException: Parameter is not valid. System.Drawing.Image.FromStream(Stream stream, bool useEmbeddedColorManagement, bool validateImageData)

Секунда: Что мне нужно сделать, это прочитать TIFFстрока из файла XML и отображение изображения (png / jpg) с использованием Viewbag во время выполнения.

Это данные файла XML: <sign>SUkqAJYAAAA7VR0Dy7B2GGDhhgwcMMG4YYMOGG2RrhwwwQcNtgiQ7ww2gT23CCeG2wl30F224QX4SCVvUIL6CQVvSBBfCQStpBIIL4QQS4QhBBQQhBBTs0BCPoKdrYUx4QUERaUggUERh8JQQLwlQJJJBUC4hUtLSSVKK6C6XQXQXC9LgttLhEJJXaCulbgsQrCgAgAgEQAAAQMAAQAAABwBAAABAQMAAQAAADAAAAACAQMAAQAAAAEAAAADAQMAAQAAAAQAAAAGAQMAAQAAAAAAAAAKAQMAAQAAAAEAAAANAQIAAQAAAAAAAAARAQQAAQAAAAgAAAASAQMAAQAAAAEAAAAVAQMAAQAAAAEAAAAWAQMAAQAAADAAAAAXAQQAAQAAAI4AAAAaAQUAAQAAAGgBAAAbAQUAAQAAAHABAAAcAQMAAQAAAAEAAAAoAQMAAQAAAAIAAAAxAQIAOQAAAHgBAAAAAAAAAACAJQAAIAAAAIAlAAAgAEltYWdlTWFnaWNrIDUuNS43IDA1LzIzLzAzIFE4IGh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnAA==</sign>

Третий: Вот некоторые ресурсы, которые я ищу:1. Преобразование файлов TIFF в PNG в .Net 2. Преобразование строки в байтовый массив в C # 3. ASP.NET Core MVC, получение файла из базы данных и рендеринг в виде изображения

Как преобразовать TIFF в PNG / JPG и отобразить его во время выполнения приложения в Asp.Net Core 3.0?

...