2010-05-07 91 views
2

我正在使用rmagick來操作圖像文件。我在每個文件上使用ImageList.new來開始。當我將此方法應用於無效的圖片文件,我得到下面的錯誤,中斷腳本的執行:檢查文件是否是有效的圖像

RMagick.rb:1635:在'讀':不正確的圖像頭(Magick :: ImageMagickError)

因此,我希望能夠在使用此方法之前檢查文件是否爲有效的圖像文件。

任何想法? 謝謝。

回答

0

如果您正在處理特定格式的圖像,您可以分析它們的標題以確定它們是否是真正有效的圖像文件。

例如,根據此GIF spec,GIF文件標頭的前3個字節爲「GIF」 - 因此,如果您收到擴展名爲.gif的文件,則可以對其進行分析以驗證其標頭是否符合規範。

+1

是的,這是有效的。我用這一個班輪檢查PNG圖像: File.new(文件路徑,「R」)獲得[0,4]條.include(「PNG‰」) 如果有人知道一個圖書館嗎?可以讓我知道。 謝謝。 – 2010-05-07 19:29:26

3

一個異常似乎是一個圖像無效的完美信號...爲什麼不簡單地拯救它呢?

如果您確實想要應用其他一些測試,則可以使用FastImage並請求類型或大小,例如,如果標頭損壞,您將得到nil

2

您可以檢查圖像的格式。例如:

image = Magick::Image::read(file_path).first 
image.format 

所以,你可以檢查格式是你期望的格式之一:

image = Magick::Image::read(file_path).first 
%w(JPEG GIF TIFF PNG).include? image.format 

這不是基於文件擴展名。它會讓你知道文件的實際格式。