So che non esiste una funzione .Net che esiste per il controllo, ma esiste un algoritmo o un modo semplice ed efficace per verificare se un byte è un'immagine valida prima di utilizzare l'array di byte. Ho bisogno di questo perché sto inviando comandi diversi a un server che ascolta costantemente il client e uno dei comandi è quello di ottenere lo screenshot del computer del server.Come verificare se un array di byte è un'immagine valida?
risposta
Si può provare a generare un'immagine dall'array di byte e controllare se il numero ArgumentException
non lo è.
public static bool IsValidImage(byte[] bytes)
{
try {
using(MemoryStream ms = new MemoryStream(bytes))
Image.FromStream(ms);
}
catch (ArgumentException) {
return false;
}
return true;
}
Non penso che questo si qualifichi come "verifica prima di utilizzare l'array di byte" –
Come notato, provare a caricarlo in un'immagine è l'unico modo sicuro. È possibile controllare il numero di magia, ovvero l'intestazione del file in base al tipo di immagine [previsto]. Per esempio, i primi 8 ottetti di un file * .PNG sono, in esadecimale:
0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
maggior parte degli altri tipi di file di immagine hanno numeri di magia simili.
Ma controllare che in realtà non ti dirà se il file è un file immagine valido. Tutto quello che saprai dopo è che il numero di magia sembra indicare che è un file di tipo X. Potrebbe ancora essere troncato o altrimenti corrotto, o anche essere qualcos'altro che capita solo di avere la giusta sequenza di ottetti nel posto giusto.
Per un JPEG è possibile verificare che i primi due byte siano 0xFF, 0xD8 e gli ultimi due siano 0xFF, 0xD9. Naturalmente è ancora possibile che i dati dell'immagine corrispondano al tag EOI, ma questo dovrebbe essere raro.
Secondo me, se desideri solo ingresso di immagini (image Proper), allora si dovrebbe andare con accettare attributo del campo di input in questo modo:
input type = "file" name = id "UploadedFile" =" imageContent "class =" required "accept =" image/* "/>
Ciò fornirà solo immagini in ingresso. Quindi, puoi liberamente programmare per il back-end. Senza preoccuparsi dell'immagine è valida o meno.
E anche è possibile specificare specifico tipo di immagine se si desidera come:
input type = "file" name = "UploadedFile" id = "imageContent" class = "necessaria" accept = "image/jpeg, immagine/gif, image/png ">
Si presume che l'utente sia un utente non malintenzionato, il browser supporti correttamente questi attributi correttamente e un paio di altre cose da considerare. Mantieni SEMPRE il tuo back-end il più possibile, poiché la validazione lato client è, purtroppo, inaffidabile. –
- 1. Come verificare se un file è un'immagine valida?
- 2. come verificare se un oggetto clojure è un array di byte?
- 3. Controlla se java.lang.reflect.Field type è un array di byte
- 4. Verificare se la stringa UTF-8 è valida in Qt
- 5. In python, come verificare se una data è valida?
- 6. Ruby: come verificare se una stringa è valida?
- 7. Come verificare se una variabile enum è valida?
- 8. Come verificare se una sessione non è valida
- 9. AIR, Flex - come verificare se la regex è valida
- 10. Come posso verificare se un oggetto contiene un array di byte?
- 11. Come verificare se un array multidimensionale è vuoto o no?
- 12. Come posso verificare se un array è nullo/vuoto?
- 13. Come verificare se un array associativo è vuoto in PowerShell
- 14. Javascript: Come verificare se array di risposta JSON è vuoto
- 15. Verificare se un'espressione regolare è valida in PHP
- 16. in un elenco annidato come verificare se una determinata sequenza di indicizzazione è valida in matematica
- 17. Typescript - Come verificare se esiste un indice di array?
- 18. Come verificare se un tipo è un typedef di int
- 19. Come convertire un array di byte in un array int?
- 20. Come verificare se il file è binario?
- 21. Come verificare se array vuoto in C
- 22. alternativa da verificare, se un valore è in un set
- 23. Implementare una funzione per verificare se un array stringa/byte segue il formato utf-8
- 24. modo rapido per verificare se un array di caratteri è zero
- 25. Verificare se è un oggetto
- 26. Java: come "tagliare" un array di byte?
- 27. Come verificare se un puntatore è valido?
- 28. Come verificare se java.lang.reflect.Type è un Enum
- 29. Come verificare se l'oggetto è un vettore
- 30. Come verificare se un DataGridViewCheckBoxCell è verificato
Ogni immagine ha un'intestazione in un determinato formato. Puoi sempre verificarlo. –