Sé que no existe la función .Net que existe para verificar, pero ¿existe un algoritmo o una manera fácil y efectiva de verificar si un byte es una imagen válida antes de usar la matriz de bytes? Lo necesito porque estoy enviando comandos diferentes a un servidor que escucha constantemente al cliente y uno de los comandos es obtener la captura de pantalla de la computadora del servidor.¿Cómo comprobar si una matriz de bytes es una imagen válida?
Respuesta
Puede tratar de generar una imagen desde la matriz de bytes y verificar el ArgumentException
si no es así.
public static bool IsValidImage(byte[] bytes)
{
try {
using(MemoryStream ms = new MemoryStream(bytes))
Image.FromStream(ms);
}
catch (ArgumentException) {
return false;
}
return true;
}
No creo que esto califique como "comprobación antes de usar el conjunto de bytes" –
Como se indica, intentar cargarlo en una imagen es la única manera a prueba de fallas. Puede verificar el número de magick aka encabezado de archivo basado en el tipo de imagen [esperado]. Por ejemplo, los primeros 8 octetos de un archivo * .png son, en hexadecimal:
0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
La mayoría de los otros tipos de archivos de imagen tienen números de magia similares.
Pero comprobar eso no le dirá si el archivo es un archivo de imagen válido. Todo lo que sabrás después es que el número mágico parece indicar que es un archivo de tipo X. Todavía podría estar truncado o dañado de alguna otra forma, o incluso podría ser algo completamente diferente que tenga la secuencia correcta de octetos en el lugar correcto.
Para un archivo JPEG, puede verificar que los primeros dos bytes sean 0xFF, 0xD8 y los dos últimos sean 0xFF, 0xD9. Por supuesto, aún es posible que los datos de la imagen coincidan con la etiqueta EOI, pero esto debería ser raro.
Según yo, si desea que sólo entrada de imagen (imagen adecuada), entonces hay que ir con aceptar atributo del campo de entrada de la siguiente manera:
input type = "file" name = id "UploadedFile" =" imageContent "class =" required "accept =" image/* "/>
Esto le dará solo imágenes en la entrada. Entonces, puedes codificar libremente para back-end. Sin preocuparse por si la imagen es válida o no.
E incluso se puede especificar el tipo de imagen específico si desea recibir:
input type = "file" name = id = clase "imageContent" "UploadedFile" = "required" accept = "image/jpeg, imagen/gif, image/png ">
Esto supone que el usuario no es un usuario malintencionado, el navegador admite estos atributos correctamente y un par de otras cosas a tener en cuenta. SIEMPRE asegure su back-end tanto como sea posible, ya que la validación del lado del cliente es, lamentablemente, poco confiable. –
- 1. C++ comprobar si una fecha es válida
- 2. ¿Cómo puedo comprobar si una URL es una imagen válida (en javascript)?
- 3. Cómo comprobar si una sesión no es válida
- 4. Comprobar si un archivo es una imagen
- 5. Comprobar si una ruta es válida en Python
- 6. MVC3 ¿Cómo comprobar si HttpPostedFileBase es una imagen
- 7. ¿Cómo comprobar si un objeto no es una matriz?
- 8. ¿Es esta una prueba válida para comprobar si una URL hace referencia a una imagen en JS/jQuery
- 9. Mostrar una matriz de bytes como una imagen usando JavaScript
- 10. ¿Cómo comprobar que la URL es una fuente de imagen válida utilizando Jquery?
- 11. ¿Cómo comprobar si existe una imagen con una URL determinada?
- 12. ¿Cómo comprobar si la consulta MySQL es válida sin ejecutarla?
- 13. Cómo comprobar que una cadena uri es válida
- 14. ¿Cómo comprobar si una cadena está en una matriz?
- 15. ¿Cómo comprobar si la ruta es válida en boost :: filesystem?
- 16. ¿Cómo comprobar si una dirección de correo electrónico es falsa?
- 17. AIR, Flex: cómo comprobar si la expresión regular es válida
- 18. cómo comprobar si java.lang.reflect.Type es una enumeración
- 19. Ruby: ¿Cómo verificar si una cadena es una hora válida?
- 20. ¿Cómo verifico si un objeto contiene una matriz de bytes?
- 21. Obtener un objeto de imagen de una matriz de bytes
- 22. MySQL: Cómo comprobar si una cadena es válida FECHA, HORA o FECHA
- 23. ¿Cómo comprobar rápidamente si el objeto NSString es una URL válida?
- 24. ¿Cómo puedo verificar si una BST es válida?
- 25. ¿Cómo comprobar si una variable es Array u Object?
- 26. Convertir matriz de bytes base64 a una imagen
- 27. ¿Cómo comprobar si una imagen tiene transparencia usando GD?
- 28. manera rápida de comprobar si una matriz de caracteres es cero
- 29. ¿Cómo comprobar si una matriz contiene término específico - Android
- 30. Cómo comprobar si una imagen contiene una cara y es razonablemente visible
Cada imagen tiene un encabezado en un formato determinado. Siempre puedes verificar eso. –