トップ «前の日記(2003-03-01) 最新 次の日記(2003-03-03)» 編集

遊びすぎ。日記


2003-03-02 [長年日記]

_ [Ruby] Exif

とりあえず出来た。 データがインテル形式、サムネイルがJpegのみ。

fname ="c:\\draw\\SH510080.JPG"
buf = '';
File.open(fname){
  f.binmode
  buf = f.read
}
p count = buf.slice(20,2).unpack("v")[0]         # ディレクトリエントリの数
e = Array.new
0.upto(count-1){|i|
  e << buf.slice(22+i*12,12).unpack("vvVV")
}
e.each{|itm|
  if itm[0] == 0x010f
    p buf.slice(12+itm[3],itm[2])
  end
}
p off_set = buf.slice(22+(count)*12,4).unpack("v*")[0] # サムネイルエントリ
p count = buf.slice(off_set+12,2).unpack("v*")[0]
f = Array.new
0.upto(count-1){|i|
  f << buf.slice(off_set+2+12+i*12,12).unpack("vvVV")            # ディレクトリエントリ
}
type = 0
f.each{|itm|
  if itm[0] == 0x0103 and itm[3] == 6
    type = itm[3]
  end
}
p type
sum_start = 0
sum_end = 0
if type ==6
  f.each{|itm|
    if itm[0] == 0x0201
      sum_start = itm[3]
    end
    if itm[0] == 0x0202
      sum_end = itm[3]
    end
  }
  File.open("temp.jpg","ab+"){|f|
   f.print(buf.slice(12+sum_start,sum_end))
  }
end

動作確認はJ-SH51だけ。

_ [Ruby] Exif

7