Я использую Asp.Net Core 3.0, и мне нужно преобразовать строку TIFF в изображение png/jpg в времени выполнения и отобразить strong> это, но я решил эту проблему поэтапно
ArgumentException: Parameter is not valid. System.Drawing.Image.FromStream(Stream stream, bool useEmbeddedColorManagement, bool validateImageData)
Во-первых: то, что я сделал,
- Я прочитал строку 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?