używam jakiś plik IO
i chcą wiedzieć, czy istnieje sposób, aby sprawdzić, czy plik jest obraz?Sprawdza czy plik jest plikiem obrazu
Odpowiedz
To działa całkiem dobrze dla mnie. Nadzieję, że mogłem pomóc
import javax.activation.MimetypesFileTypeMap;
import java.io.File;
class Untitled {
public static void main(String[] args) {
String filepath = "/the/file/path/image.jpg";
File f = new File(filepath);
String mimetype= new MimetypesFileTypeMap().getContentType(f);
String type = mimetype.split("/")[0];
if(type.equals("image"))
System.out.println("It's an image");
else
System.out.println("It's NOT an image");
}
}
próbowałem go, ale zawsze zwraca "application/octet-stream – dermoritz
hi @dermoritz To wydaje się być problemem w twoim systemie. post http: // stackoverflow.com/questions/4855627/java-mimetypesfiletypemap-zawsze-powracająca-aplikacja-oktet-stream-on-android-e –
Co z adresem URL? Przed zapisaniem adresu URL do pliku? Dostałem "application/octet-stream" zamiast obrazu. Dowolny pomysł ? – WowBow
Można spróbować czegoś takiego:
import javax.activation.MimetypesFileTypeMap;
File myFile;
String mimeType = new MimetypesFileTypeMap().getContentType(myFile));
// mimeType should now be something like "image/png"
if(mimeType.substring(0,5).equalsIgnoreCase("image")){
// its an image
}
to powinno działać, chociaż nie wydaje się być najbardziej elegancka wersja.
Zastanawiam się, gdzie jest różnica od mojego rozwiązania –
Przykro mi, kiedy napisałem odpowiedź, twoja nie było ... może zajęło mi to zbyt dużo czasu, aby ją napisać. Ale masz rację, jest zupełnie taki sam :) – GameDroids
eheh, bez problemu. Myślę, że zdarza się to każdemu przez cały czas. :) –
W Javie 7, istnieje metoda java.nio.file.Files.probeContentType(). W systemie Windows wykorzystuje to rozszerzenie pliku i rejestr (nie sprawdza zawartości pliku). Następnie możesz sprawdzić drugą część typu MIME i sprawdzić, czy ma on postać <X>/image
.
działa, ale powinieneś użyć pierwszej części "image/jpeg" – dermoritz
W Linuksie wydaje się, że patrzysz tylko na rozszerzenie na moim komputerze. Zmieniono plik .jpeg na .txt i zwrócono "tekst/zwykły". Podoba mi się odpowiedź Krystiana poniżej. – yngwietiger
Istnieje wiele sposobów, aby to zrobić; zobacz inne odpowiedzi i linki do powiązanych pytań. (Podejście Java 7 wydaje mi się najbardziej atrakcyjne, ponieważ domyślnie używa konwencji związanych z platformą i możesz podać swój własny schemat określania typu pliku.)
Chciałbym jednak zaznaczyć, że nie mechanizm jest całkowicie nieomylny:
metod, które opierają się na przyrostkiem plik zostanie oszukany jeśli przyrostek jest niestandardowa lub źle.
Metody, które polegają na atrybutach pliku zostanie oszukany, jeśli plik ma niepoprawny atrybut type contetnt lub wcale.
Metody, które polegają na patrząc na podpis pliku można nabrać plików binarnych, które akurat mają takie same bajty podpisu.
Nawet próba odczytania pliku jako obrazu może zostać oszukana, jeśli nie masz szczęścia ... w zależności od formatu (formatów) obrazu, który wypróbujesz.
if(ImageIO.read(*here your input stream*) == null)
*IS NOT IMAGE*
a także nie jest odpowiedź: How to check a uploaded file whether it is a image or other file?
To jedyny sposób, jaki mogłem znaleźć, jeśli plik jest plikiem obrazu (w systemie Ubuntu z Java 8). – zafar142003
Można spróbować czegoś takiego:
String pathname="abc\xyz.png"
File file=new File(pathname);
String mimetype = Files.probeContentType(file.toPath());
//mimetype should be something like "image/png"
if (mimetype != null && mimetype.split("/")[0].equals("image")) {
System.out.println("it is an image");
}
import javax.activation.MimetypesFileTypeMap;
import java.io.File;
class Untitled
{
public static void main(String[] args)
{
String filepath = "/the/file/path/image.jpg";
File f = new File(filepath);
String mimetype= new MimetypesFileTypeMap().getContentType(f);
if(mimetype.startsWith("image/"))
System.out.println("It's an image");
else
System.out.println("It's NOT an image");
}
}
Można również użyć tego sposobu, jeśli chcesz sprawdzić obrazy przez ograniczone rozszerzenia. Powinieneś jednak zastosować twarde rozszerzenia kodu, które chcesz filtrować.
public static boolean isImage(String filepath) {
String[] extensions = {".jpg",".png"};
for (String extension : extensions) {
if(filepath.endsWith(extension)){
System.out.println("Its an image");
return true;
}
}
return false;
Ale polecam ten sposób,
public static boolean isImage(String filepath) throws IOException {
File f = new File(filepath);
return (ImageIO.read(f) != null);
}
- 1. Sprawdza czy plik istnieje
- 2. PHP sprawdza, czy plik jest zablokowany flock()?
- 3. Wykrywanie, czy plik obrazu PNG jest przezroczysty?
- 4. Jak sprawdzić, czy plik jest plikiem EXE lub DLL?
- 5. Sprawdzanie, czy plik faktycznie jest plikiem Excela przy użyciu EPPlus
- 6. Pracownik w tle sprawdza, czy jest północ?
- 7. Czy gramatyka jest niezgodna z plikiem
- 8. Zabezpiecz plik DLL plikiem licencyjnym
- 9. C++ - Wykrywanie, czy plik jest PNG czy JPEG
- 10. Sprawdź, czy argument jest plikiem lub katalogiem
- 11. Jak mogę sprawdzić, czy plik Xls jest edytowalnym plikiem, czy nie, używając phpexcel?
- 12. scp "nie jest zwykłym plikiem"
- 13. jak znaleźć ścieżkę docelową linku jeśli plik jest plikiem Link
- 14. Czy plik project.xcworkspace jest ważny?
- 15. Sprawdź, czy plik jest rzeczywiście obrazem w pliku express/node.js
- 16. Jak zatrzymać plik z wywołanym plikiem JAR
- 17. Sprawdza czy blok jest przekazywana z RSpec Mocks
- 18. Python sprawdza, czy klucz jest zdefiniowany w słowniku
- 19. Dlaczego ArrayList # rangeCheck nie sprawdza, czy indeks jest ujemny?
- 20. Sprawdź, czy przesłany plik jest obraz w C# ASP.NET MVC
- 21. Jak mogę sprawdzić, czy plik na serwerze FTP jest identyczny z plikiem lokalnym bez pobierania pliku?
- 22. Jak mogę się dowiedzieć, czy plik jest plikiem lub katalogiem, jeśli nie istnieje?
- 23. Różnica między plikiem .msg a plikiem .eml
- 24. Sprawdź, czy przekazany argument jest plikiem lub katalogiem w BASH
- 25. Jak mogę zapisać plik obrazu wygenerowany przez tag canvas z plikiem heatmap.js?
- 26. Czy funkcja memcheck valgrind sprawdza mmap
- 27. HSQLDB - który jest głównym plikiem bazy danych
- 28. Jakie są różnice między plikiem "plik podpisu" i plikiem "unsigned" pliku .apk?
- 29. Sprawdź, czy plik jest pusty
- 30. Czy plik jest pusty sprawdź
http://stackoverflow.com/questions/670546/determine-if-file-is-an-image (C#, ale chodzi o sprawdzanie nagłówków , który nie jest specyficzny dla danego języka) lub http://stackoverflow.com/questions/2192717/check-if-a-file-is-an-image lub http://stackoverflow.com/questions/9244710/know- if-a-file-is-a-image-in-java-android lub – birryree