Jay*_*hra 8 c# image aws-lambda asp.net-core imagesharp
我无法在 c# 中使用 SixLabors.ImageSharp 版本 - 1.0.0-beta0007 保存 jpg 图像,它会引发错误。除了 GIF、PNG、JPEG、BMP 格式图像之外,还有其他解决方案可以解决此问题吗?
抛出异常:
无法加载图像。可用的解码器:
代码:
public string ResizeImage(byte[] imageBytes, int height, int width)
{
byte[] image = new byte[] { };
using (MemoryStream inStream = new MemoryStream(imageBytes))
{
using (MemoryStream outStream = new MemoryStream())
{
using (Image imageSharp = Image.Load(inStream))
{
imageSharp.Mutate(x => x.Resize(width, height));
imageSharp.SaveAsJpeg(outStream);
imageSharp.Dispose();
}
image = outStream.ToArray();
outStream.Flush();
inStream.Flush();
}
}
return Convert.ToBase64String(image);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
确保流位置为零或尝试将流复制到新流,然后将位置设置为零,因为有时 azure blob 服务会关闭返回的流
using (MemoryStream stream = new MemoryStream())
using (var ms = new MemoryStream())
await largeBlob.DownloadToAsync(ms);
ms.Position = 0;
ms.CopyTo(stream);
stream.Position = 0;
var image = Image.Load(stream, out IImageFormat format)
Run Code Online (Sandbox Code Playgroud)
这是因为 AWS 在文件上传方面做了一件奇怪的事情,您会发现 byte[] 实际上不是有效的图像文件(可以通过保存原始字节数组进行测试)。
另一个问题的答案应该可以帮助您重新配置 AWS 以允许您的代码正常工作。
| 归档时间: |
|
| 查看次数: |
9993 次 |
| 最近记录: |