Я пытаюсь прочитать изображение в формате Base64, используя .Net Core 2.2, и оно выдает
ArgumentException: формат изображения неизвестен.System.Drawing.Image.FromFile (строковое имя файла, bool useEmbeddedColorManagement)
FilePath правильный, и я дважды и трижды проверил, что файл существует.
Я попытался присвоить имяМои PNG с расширением как в верхнем, так и в нижнем регистре.
Это не происходит локально в Windows, но после развертывания приложения в Linux это происходит.Данный код приведен ниже.
public static string ImageToBase64(string filePath)
{
System.Diagnostics.Debug.WriteLine($"File Path for Image: {filePath}");
string base64String;
using (var image = Image.FromFile(Path.GetFullPath(filePath)))
{
using (var ms = new MemoryStream())
{
image.Save(ms, image.RawFormat);
image.Dispose();
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
imageBytes = null;
ms.Dispose();
}
}
GC.Collect();
return base64String;
}
РЕДАКТИРОВАТЬ
Я также попытался использовать файловый поток с растровым изображением.
public static string ImageToBase64(string filePath)
{
string base64String;
using(var fs = new FileStream(filePath,FileMode.Open))
using (var image = new Bitmap(fs))
{
using (var ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Png);
image.Dispose();
byte[] imageBytes = ms.ToArray();
base64String = Convert.ToBase64String(imageBytes);
imageBytes = null;
ms.Dispose();
}
}
GC.Collect();
return base64String;
}
Это выдаетследующее исключение:
Возникло исключение: «System.ArgumentException» в System.Drawing.Common.dll: «Формат изображения неизвестен».Трассировка стека:
в System.Drawing.Image.InitializeFromStream (поток Stream) в System.Drawing.Bitmap..ctor (поток Stream)