Wiem, że nie istnieje żadna funkcja .Net, która istnieje dla sprawdzenia, ale czy istnieje algorytm lub prosty i skuteczny sposób sprawdzenia, czy bajt jest poprawnym obrazem, zanim użyję tablicy bajtów. Potrzebuję tego, ponieważ wysyłam różne polecenia do serwera, który ciągle nasłuchuje klienta, a jednym z poleceń jest pobranie zrzutów ekranu komputera serwera.Jak sprawdzić, czy tablica bajtów jest prawidłowym obrazem?
Odpowiedz
Można spróbować wygenerować obraz z tablicy bajtów i sprawdzić, czy nie jest to ArgumentException
.
public static bool IsValidImage(byte[] bytes)
{
try {
using(MemoryStream ms = new MemoryStream(bytes))
Image.FromStream(ms);
}
catch (ArgumentException) {
return false;
}
return true;
}
Nie uważam tego za "sprawdzanie przed użyciem tablicy bajtów". –
Jak już wspomniano, próba załadowania go do obrazu jest jedyną metodą awaryjną. Możesz sprawdzić numer magika jako nagłówek pliku na podstawie [oczekiwanego] typu obrazu. Na przykład, pierwsze 8 oktetów z pliku * .png są w hex:
0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
Większość innych typów plików graficznych mają podobne numery Magick.
Ale sprawdzenie, czy nie powie Ci, czy plik jest prawidłowym plikiem graficznym. Wszystko, co będziesz wiedzieć później, to fakt, że liczba magów wydaje się wskazywać, że jest to plik typu X. Nadal może być obcięty lub w inny sposób uszkodzony, lub nawet być czymś zupełnie innym, co po prostu ma odpowiednią sekwencję oktetów w właściwe miejsce.
Dla pliku JPEG można sprawdzić, czy pierwsze dwa bajty to 0xFF, 0xD8, a ostatnie dwa to 0xFF, 0xD9. Oczywiście nadal jest możliwe, że dane obrazu będą pasować do znacznika EOI, ale powinno to być rzadkie.
Według mnie, jeśli chcesz tylko wejścia obrazu (Proper obrazu), a następnie należy udać się akceptować atrybut pola wprowadzania takiego:
input type = "file" name = "uploadedFile" id =” imageContent "class =" required "accept =" image/* "/>
To da ci tylko obrazy na wejściu. Możesz więc swobodnie kodować backend. Bez obawy o obraz jest ważny, czy nie.
I nawet można określić konkretny typ obrazu, jeśli chcesz jak:
input type = "file" name = "uploadedFile" id = class "imageContent" = "wymagane" Accept = "image/jpeg, obrazu/gif, image/png ">
Zakłada to, że użytkownik nie jest złośliwym użytkownikiem, przeglądarka odpowiednio obsługuje te atrybuty oraz kilka innych rzeczy do rozważenia. ZAWSZE zabezpieczaj swój back-end tak bardzo, jak to możliwe, ponieważ walidacja po stronie klienta jest niestety niewiarygodna. –
- 1. Jak sprawdzić, czy tablica jest pusta?
- 2. Jak sprawdzić, czy tablica jest stertą min?
- 3. Python: Jak sprawdzić, czy ciąg jest prawidłowym IRI?
- 4. Jak szybko sprawdzić, czy obiekt NSString jest prawidłowym adresem URL?
- 5. Ruby: Jak sprawdzić, czy ciąg znaków jest prawidłowym czasem?
- 6. Jak sprawdzić tablicę bajtów pustą, czy nie?
- 7. Czy "_ [....]" jest prawidłowym identyfikatorem?
- 8. Ruby on Rails: Jak sprawdzić, czy plik jest obrazem?
- 9. ng-jeśli sprawdzić, czy tablica jest pusta
- 10. Jak sprawdzić, czy tablica wielowymiarowa jest pusta, czy nie?
- 11. ustalić, czy tablica bajtów zawiera bajtów w określonej kolejności
- 12. Tablica bajtów w groovy
- 13. Czy ta tablica bajtów jest dokumentem PDF zabezpieczonym hasłem?
- 14. Tablica bajtów Tokenize
- 15. Tablica bajtów do float
- 16. Jak sprawdzić, czy pusta tablica w C
- 17. Tablica bajtów do NSData
- 18. jak sprawdzić, czy obiekt clojure jest tablicą bajtów?
- 19. Jak sprawdzić, czy moja tablica zawiera obiekt?
- 20. Jak sprawdzić, czy obiekt zawiera tablicę bajtów?
- 21. Sprawdź, czy tablica bajtów jest w całości 0xff
- 22. Jak sprawdzić, czy tablica ma wartość zerową lub jest pusta?
- 23. Jak sprawdzić, czy jedna tablica jest podzbiorem innej?
- 24. Jak sprawdzić, czy w jq jest tablica lub obiekt?
- 25. JavaScript: Jak sprawdzić, czy odpowiedź JSON tablica jest pusta
- 26. Perl jak sprawdzić, czy tablica jest wciąż pusta?
- 27. Sprawdź, czy ciąg znaków jest obrazem
- 28. Sprawdź, czy typ java.lang.reflect.Field jest tablicą bajtów
- 29. Tablica bajtów Androida na Bitmapie Jak
- 30. Jak sprawdzić, czy plik jest obrazkiem?
Każdy obraz ma nagłówek w określonym formacie. Zawsze możesz to sprawdzić. –