2012-12-07 56 views
15

可能重複:
Know if a file is a image in Java/AndroidAndroid:如何檢查文件是否爲圖像?

如何檢查一個文件,如果它是一個形象呢? 類似以下內容:

如果(file.isImage)....

如果這是無法實現的標準庫,我怎麼能與MagickImage LIB辦呢?

在此先感謝!

+2

可能是你可以對文件擴展名檢查.. –

+1

可能重複http://stackoverflow.com/q/9244710/681807 –

+0

我認爲這不是正確的方式來檢查文件擴展名。因爲我將不得不創建一個函數,檢查每個圖像文件擴展名,如BMP,JPG,JPEG,PNG,GIF,TIF等... –

回答

16

試試這個代碼親愛的。

public class ImageFileFilter implements FileFilter 
    { 
     File file; 
     private final String[] okFileExtensions = new String[] {"jpg", "png", "gif","jpeg"}; 

     /** 
     * 
     */ 
     public ImageFileFilter(File newfile) 
     { 
      this.file=newfile; 
     } 

     public boolean accept(File file) 
     { 
      for (String extension : okFileExtensions) 
       { 
        if (file.getName().toLowerCase().endsWith(extension)) 
        {    
        return true; 
        } 
       } 
      return false;   
     } 

    } 

它工作正常。

並使用它就像 (新的ImageFileFilter(傳遞文件名));

+4

這工作...現在我必須搜索每個圖像擴展名... –

+0

大多數親愛的。 –

+9

@ZalaJanaksinh這將爲任何具有「圖像文件擴展名」的文件返回「true」,例如如果我將'test.mp3'重命名爲'test.jpg',你的方法將返回'true'。 – Baz

40

我想如果你想檢查一個文件是否是一個圖像,你需要閱讀它。圖像文件可能不符合文件擴展名規則。你可以嘗試通過BitmapFactory如下解析文件:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
Bitmap bitmap = BitmapFactory.decodeFile(path, options); 
if (options.outWidth != -1 && options.outHeight != -1) { 
    // This is an image file. 
} 
else { 
    // This is not an image file. 
} 
+1

但你需要'try'' catch'吧?.. – Doomsknight

+0

你可以檢查BitmapFactory.decodeFile(path,options)的返回值; – zsxwing

+3

options.inJustDecodeBounds = true減少解析時間成本,因爲decodeFile將僅解析圖像的寬度和高度。 – zsxwing