我知道没有用于检查的.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个字节是,在十六进制:
0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
大多数其他类型的图像文件也有类似的magick号码。
但是检查,实际上不会告诉你,如果该文件是一个有效的图像文件。所有你会知道的是,这个magick数似乎表明它是一个X类型的文件。它仍然可能被截断或者被破坏,甚至是完全不同的东西,只是碰巧有正确的八位字节序列正确的位置。
对于JPEG,您可以检查前两个字节是0xFF,0xD8,最后两个字节是0xFF,0xD9。当然,它的图像数据仍然可能与EOI标签相匹配,但这应该很少见。
据我,如果你想只图像输入(正确的图像),那么你就应该接受这样的输入域的属性去:
输入类型=“文件” NAME =“UploadedFile的” ID =” imageContent“class =”required“accept =”image/*“/>
这会给你输入图像。所以,你可以自由编码后端。不用担心图像是否有效。
而且,即使你要喜欢,你可以指定特定的图像类型:
输入类型= “文件” NAME = “UploadedFile的” ID = “imageContent” 级= “需要” 接受=“图像/ JPEG,图像/ gif,image/png“>
这假定用户是一个非恶意用户,浏览器正确支持这些属性,还有其他一些事情要考虑。总是尽可能地保护您的后端,因为客户端验证令人遗憾地不可靠。 –
- 1. 如何检查字节数组是否有效UTF-8字符串
- 2. 检查图像是否有效显示
- 3. 检查图像是否有效
- 4. 如何检查clojure对象是否是字节数组?
- 5. JSF:如何检查图像是否有效显示
- 6. 检查文件是否是有效的图像
- 7. 如何检查是否有在数组
- 8. 如何检查对象是否包含字节数组?
- 9. 如何检查字节数组是否为空?
- 10. 如何检查字符串是否是有效的HTTP URL?
- 11. 检查数组是否有字符串?
- 12. 如何检查RDD是否有效?
- 13. 如何检查代表是否有效?
- 14. 如何检查BST是否有效?
- 15. 如何检查IndexPath是否有效?
- 16. 如何检查网卡是否有效?
- 17. 如何检查ngform是否有效
- 18. 检查远程URL是否有有效的图像扩展
- 19. 如何检查查询字符串中的ID是否有效?
- 20. 检查字符串是否有效
- 21. 检查cherrypy是否有效
- 22. 检查BitmapData是否有效
- 23. 如何检查ID是否是数字?
- 24. 检查数学函数是否有效
- 25. 的UIImage,检查是否含有图像
- 26. 如何检查图像是否可见?
- 27. 另一种检查图像url的方法是否有效
- 28. 检查C#字节数组是否包含字符串
- 29. 如何检查字节数组是否包含Java中的Unicode字符串?
- 30. 检查图像是否有源XAML
每个图像都有一个特定格式的标题。你可以随时检查。 –