2018/07/13(金) [n年前の日記]
#1 [ruby] Rubyで画像ファイルの破損チェックをしてみたり
破損してる画像ファイルを調べるツールは無いのかなとググってみたけど見つからず。ただ、Rubyを使って簡易的に破損してるか調べる事例を見かけたわけで。
_Rubyで画像ファイルが破損していないかチェックする - craftoneの日記
ありがたや。コレを利用させてもらおう…。
ファイル、またはフォルダのパスを与えたら、件の関数に渡して結果を表示するスクリプトを書いてみたり。
手元のHDD内のファイルに対して試してみたら、破損してる画像がいくつか見つかった。イイ感じ。
常用してる2画面ファイラー、 _あふ から呼び出して使うことにした。あふ用のメニューファイルに以下を追加。
_Rubyで画像ファイルが破損していないかチェックする - craftoneの日記
ありがたや。コレを利用させてもらおう…。
ファイル、またはフォルダのパスを与えたら、件の関数に渡して結果を表示するスクリプトを書いてみたり。
# usage : ruby checkimage.rb IMAGE_FILE # ruby checkimage.rb DIR DUMP_NORMAL = false $err_count = 0 # # 前述のページのソースをここにコピペ # def check_and_output(path) if FileTest.directory?(path) pathlist = [] Dir::entries(path).each do |lpath| next if lpath =~ /^\.{1,2}$/ lpath = path + "/" + lpath check_and_output(lpath) end elsif FileTest.file?(path) return unless path =~ /\.(gif|jpg|png)$/ result = check_file(path) lpath = File.basename(path) if result[0] == :unknown puts "unknown : #{lpath}" elsif result[1] == :damaged puts "corrupted : #{lpath}" $err_count += 1 elsif result[1] == :clean puts "normal : #{lpath}" if DUMP_NORMAL else puts "illegal : #{lpath}" end else puts "not found #{path}" end end def hit_enter_key puts "\nHit Enter Key" s = STDIN.gets end def usage puts "usage: ruby #{$0} IMAGE_FILE" puts " ruby #{$0} DIR" end if $0 == __FILE__ if ARGV.size == 0 usage else ARGV.each do |path| puts "check #{path}" check_and_output(path) end puts "\ncorrupted : #{$err_count}" end hit_enter_key exit(0) end
手元のHDD内のファイルに対して試してみたら、破損してる画像がいくつか見つかった。イイ感じ。
常用してる2画面ファイラー、 _あふ から呼び出して使うことにした。あふ用のメニューファイルに以下を追加。
"Image file damage check" cmd.exe /c ruby checkimage.rb "$P"
- cmd.exe /c hoge で、DOS窓を開いて hoge を実行。
- 「"$P"」で、あふで開いてるフォルダのパスが渡される。
[ ツッコむ ]
以上です。