c# - 验证 base64 编码图像 .NET 核心

标签 c# asp.net-core asp.net-core-mvc system.drawing

我正在构建一个 API,除其他外,它允许用户更改他们的照片。这张照片作为 base64 字符串发送,我希望能够验证它是实际的 .jpeg 或 .png 格式。 由于 .NET 核心中缺少 System.Drawing,我不确定该怎么做。在我可以简单地使用类似

的东西之前
public Image Base64ToImage(string base64String)
 {
    // Convert base 64 string to byte[]
    byte[] imageBytes = Convert.FromBase64String(base64String);
    // Convert byte[] to Image
    using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
    {
        Image image = Image.FromStream(ms, true);
        return image;
    }
 }

然后从那里去检查我需要的图像。

任何帮助将不胜感激

最佳答案

当您没有 System.Drawing 时,我会查看实际字节以查看它们是否符合 JPEG 或 PNG 文件标准。

对于 PNG 文件,前八个字节始终包含以下十进制值:137 80 78 71 13 10 26 10 ( Source )

JPEG 文件更复杂,但也可以完成。至少,前两个字节似乎总是 0xFF 0xD8 ( Source )。阅读更多关于文件结构的信息以获得更好的比较值。

基于此,您可以对 imageBytes 数组中的字节进行简单比较。

关于c# - 验证 base64 编码图像 .NET 核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38738315/

相关文章:

c# - ASP.NET Core 中 SignalR 的依赖注入(inject)

c# - 将事件附加到 DataGridView 单元格的底层 TextBox

c# - var 关键字在 LINQPad 4 中不起作用

c# - 使用存储在 session 中的 Guid 过滤 Linq

angular - ASP.NET Core 3 - Angular SPA PWA

authentication - 使用 Azure AD 时收到 IDX10501 : Signature validation failed. 无法匹配 key 的错误消息

c# - .Net Core HttpClient 摘要身份验证

c# - vb6 和 c# 中的 AES 加密

c# - 如何将 Web API Controller 添加到现有的 ASP.NET Core MVC?

c# - Asp.Net Core SPA 与分离解决方案(Asp.Net Core WebApi + Web 应用程序)