我正在尝试使用 .Net Core 2.2 将图像读入 Base64 格式并抛出
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.Drawing.Common.dll 中的“System.ArgumentException”:“图像格式未知。” 堆栈跟踪:
在 System.Drawing.Image.InitializeFromStream(流流) 在 System.Drawing.Bitmap..ctor(流流)
白板的微信
aluckdog
牧羊人nacy
相关分类