首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查字节数组是否为有效镜像?

如何检查字节数组是否为有效镜像?
EN

Stack Overflow用户
提问于 2011-12-02 07:12:15
回答 4查看 30.1K关注 0票数 26

我知道没有用于检查的.Net函数,但是在我使用字节数组之前,有没有一种算法或简单有效的方法来检查一个字节是否是一个有效的图像。我之所以需要这样做,是因为我正在向一个不断监听客户端的服务器发送不同的命令,其中一个命令是获取服务器计算机的屏幕截图。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-02 07:17:37

您可以尝试从字节数组生成图像,如果不是,则检查ArgumentException

代码语言:javascript
复制
public static bool IsValidImage(byte[] bytes)
{
    try {
        using(MemoryStream ms = new MemoryStream(bytes))
           Image.FromStream(ms);
    }
    catch (ArgumentException) {
       return false;
    }
    return true; 
}
票数 46
EN

Stack Overflow用户

发布于 2011-12-02 08:30:54

如前所述,尝试将其加载到映像中是唯一的故障保护方法。您可以根据预期的图像类型检查magick number aka文件头。例如,*.PNG文件的前8个八位字节以十六进制表示:

代码语言:javascript
复制
0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A

http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header

大多数其他类型的图像文件都有类似的魔术数字。

但是检查它实际上并不能告诉你这个文件是否是一个有效的图像文件。在那之后,你所知道的就是这个神奇的数字似乎表明它是一个X类型的文件。它仍然可能被截断或以其他方式损坏,或者甚至是一些完全不同的东西,只是碰巧在正确的位置有正确的八位字节序列。

票数 11
EN

Stack Overflow用户

发布于 2013-05-24 04:36:56

对于JPEG,您可以检查前两个字节是否为0xFF、0xD8,最后两个字节是否为0xFF、0xD9。当然,图像数据仍然有可能与EOI标签匹配,但这种情况应该很少发生。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8349693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档