我正在使用rmagick來操作圖像文件。我在每個文件上使用ImageList.new來開始。當我將此方法應用於無效的圖片文件,我得到下面的錯誤,中斷腳本的執行:檢查文件是否是有效的圖像
RMagick.rb:1635:在'讀':不正確的圖像頭(Magick :: ImageMagickError)
因此,我希望能夠在使用此方法之前檢查文件是否爲有效的圖像文件。
任何想法? 謝謝。
我正在使用rmagick來操作圖像文件。我在每個文件上使用ImageList.new來開始。當我將此方法應用於無效的圖片文件,我得到下面的錯誤,中斷腳本的執行:檢查文件是否是有效的圖像
RMagick.rb:1635:在'讀':不正確的圖像頭(Magick :: ImageMagickError)
因此,我希望能夠在使用此方法之前檢查文件是否爲有效的圖像文件。
任何想法? 謝謝。
如果您正在處理特定格式的圖像,您可以分析它們的標題以確定它們是否是真正有效的圖像文件。
例如,根據此GIF spec,GIF文件標頭的前3個字節爲「GIF」 - 因此,如果您收到擴展名爲.gif
的文件,則可以對其進行分析以驗證其標頭是否符合規範。
一個異常似乎是一個圖像無效的完美信號...爲什麼不簡單地拯救它呢?
如果您確實想要應用其他一些測試,則可以使用FastImage並請求類型或大小,例如,如果標頭損壞,您將得到nil
。
您可以檢查圖像的格式。例如:
image = Magick::Image::read(file_path).first
image.format
所以,你可以檢查格式是你期望的格式之一:
image = Magick::Image::read(file_path).first
%w(JPEG GIF TIFF PNG).include? image.format
這不是基於文件擴展名。它會讓你知道文件的實際格式。
是的,這是有效的。我用這一個班輪檢查PNG圖像: File.new(文件路徑,「R」)獲得[0,4]條.include(「PNG‰」) 如果有人知道一個圖書館嗎?可以讓我知道。 謝謝。 – 2010-05-07 19:29:26