【发布时间】:2022-01-24 04:18:33
【问题描述】:
如何将保存 png 图像的 byte[] 转换为要保存在文件系统上的文件?
using MemoryStream memoryStream = new
MemoryStream(response.Shipments[0].ShippingLabel);
memoryStream.Position = 0;
System.Drawing.Image image = System.Drawing.Image.FromStream(memoryStream);
image.Save(@"C:\\Users\CS\Documents\FedexLabel.png", ImageFormat.Png);
上面的代码一直抛出这个错误:
System.AggregateException
HResult=0x80131500
Message=One or more errors occurred. (Parameter is not valid.)
Source=System.Private.CoreLib
StackTrace:
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken
cancellationToken)
at System.Threading.Tasks.Task.Wait()
at ConsoleApp3.Program.Main(String[] args) in
This exception was originally thrown at this call stack:
[External Code]
Marketplace.FedexServices.FedexServicesTest.TestFedexCreateShipmentService() in
FedexServicesTest.cs
Inner Exception 1:
ArgumentException: Parameter is not valid.
【问题讨论】:
-
路径中有双反斜杠。我不太确定这是否合法。
-
@bent-tranberg
.Save不会抛出ArgumentException,但System.Drawing.Image.FromStream(...)会抛出,因此在这种情况下图像数据可能无效。 -
仅供参考
File.WriteAllBytes存在。我可能会用它来写它。如果您不能 100% 信任这些字节的来源,那么在写入之前检查它是否是有效图像可能仍然是个好主意。 -
字节直接来自其他服务器。我应该使用 Convert.ToBase64() 吗? File.WriteAllBytes 会输出什么?
-
你检查过这个链接吗? stackoverflow.com/questions/9173904/…
标签: c# asp.net asp.net-core