画像縦横サイズ一括指定
gemでimagesizeというのを見つけたので全HTMLの全img要素に画像の縦横サイズを挿入するスクリプトを作ってみようと思った。ひとまず全img要素のファイルサイズを標準出力とログファイルに吐き出すところまで実装。
が、一部のがjpgで正常にファイルサイズを取得できず。。。くそー!
$KCODE = 'sjis' #テストしてるサイトがsjisだったので・・。 require 'kconv' require 'rubygems' require 'image_size' require 'find' require 'hpricot' log = open("check-img-size.log","w") htmls=[] #HTMLファイルのパスが入る配列 Find.find(".") do |path| if path.match(/\.html$/) #とりあえず拡張子は html のみ htmls.push(path.to_s) end end htmls.each do |html| #各HTMLを doc = Hpricot(open(html,"r")) #Hpricotで開いて puts "http://old_temp.localhost"+html.sub(/^\./,"")+"\n" #開いたファイルを標準出力と log << "http://old_temp.localhost"+html.sub(/^\./,"")+"\n" #ログファイルに記録。 doc.search('img').each do |img| #HTML内の各img要素から img_path="."+img.attributes["src"].to_s #src属性を取得し画像ファイルのパスを取得し log << img_path+"\n" #画像パスをログファイルに記録。 if FileTest.exist?(img_path) #画像ファイルが存在すれば open(img_path) do |img_file| #画像ファイルを開き begin img_size=ImageSize.new(img_file.read).get_size.join(",") #縦横サイズを取得し puts img_size #標準出力と log << img_size+"\n" #ログファイルに吐き出す。 rescue Exception #もし取得できなければ puts "couldn't get image size" #標準出力と log << "couldn't get image size\n" #ログファイルにエラーメッセージを残す end end end end end
何ファイルかに一回"couldn't get image size"って出ちゃうんだよなー。たぶんjpg画像がおかしんだろうけどどうにか計る方法ないかな。
これが出来ればあとはimg要素にheightとwidth挿入するだけなのに。
ていうか今日に限って会社に人が居ないのは偶然だよね。