如何检查字节数组是否是有效图像?
我知道没有用于检查的.Net函数,但是在我使用字节数组之前,是否存在一种算法或简单有效的方法来检查字节是否是有效图像。 我需要这个,因为我正在向不断收听客户端的服务器发送不同的命令,其中一个命令是获取服务器计算机的屏幕截图。
您可以尝试从字节数组生成图像,如果不是,则检查ArgumentException
。
public static bool IsValidImage(byte[] bytes) { try { using(MemoryStream ms = new MemoryStream(bytes)) Image.FromStream(ms); } catch (ArgumentException) { return false; } return true; }
如上所述,尝试将其加载到映像中是唯一的故障安全方法。 您可以根据[预期]图像类型检查magick编号aka文件头。 例如,* .PNG文件的前8个八位字节为hex:
0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
大多数其他类型的图像文件具有相似的magick数字。
但检查实际上不会告诉您文件是否是有效的图像文件。 你所知道的就是magick数字似乎表明它是一个X类型的文件。它仍然可能被截断或以其他方式被破坏,甚至完全是其他恰好恰好具有正确的八位字节序列的东西。正确的地点。
对于JPEG,您可以检查前两个字节是0xFF,0xD8,后两个字节是0xFF,0xD9。 当然,图像数据仍然可能与EOI标签匹配,但这应该是罕见的。
据我说,如果你只想要图像输入(正确的图像),那么你应该使用输入字段的accept属性,如下所示:
input type =“file”name =“uploadedFile”id =“imageContent”class =“required”accept =“image / *”/>
这将只为您提供输入图像。 因此,您可以自由编写后端代码。 不用担心图像是否有效。
如果您愿意,甚至可以指定特定的图像类型:
input type =“file”name =“uploadedFile”id =“imageContent”class =“required”accept =“image / jpeg,image / gif,image / png”>
上述就是C#学习教程:如何检查字节数组是否是有效图像?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/988087.html