Changeset 4808 for platform/tdiary

Show
Ignore:
Timestamp:
01/17/08 22:10:18 (7 years ago)
Author:
kp
Message:

platform/tdiary/plugin/image_gps.rb use ExifParser?,platform/tdiary/util/exifparser add library for image_gps.rb

Location:
platform/tdiary
Files:
23 added
1 modified

Legend:

Unmodified
Added
Removed
  • platform/tdiary/plugin/image_gps.rb

    r4634 r4808  
    1 # image_gps.rb $Revision: 1.5 $ 
     1# image_gps.rb $Revision: 1.6 $ 
    22#  
    33# ���: 
     
    1212 
    1313=begin ChangeLog 
     142008-01-17 kp 
     15  * ������� 
     162006-03-28 kp 
     17  * cooperation with ALPSLAB clip 
     182006-03-27 kp 
     19  * use exifparser 
    14202005-07-25 kp 
    1521  * correct link url when access with mobile. 
     
    2531 
    2632require 'wgs2tky' 
     33require 'exifparser' 
    2734 
    2835def image( id, alt = 'image', thumbnail = nil, size = nil, place = 'photo' ) 
     
    3643  if size then 
    3744    if size.kind_of?(Array) 
    38       size = %Q| width="#{size[0].to_i}" height="#{size[1].to_i}"| 
     45      size = " width=\"#{size[0]}\" height=\"#{size[1]}\"" 
     46       
    3947    else 
    40       size = %Q| width="#{size.to_i}"| 
     48      size = " width=\"#{size.to_i}\"" 
    4149    end 
    4250  else 
     
    4755  mapion = 'http://www.mapion.co.jp' 
    4856 
    49   ( datum,nl,el ) = gps_info("#{@image_dir}/#{image}") 
     57  exif = ExifParser.new("#{@image_dir}/#{image}".untaint) rescue nil 
    5058   
    51   if thumbnail then 
    52     %Q[<a href="#{h @image_url}/#{h image}"><img class="#{h place}" src="#{h @image_url}/#{h image_t}" alt="#{h alt}" title="#{h alt}"#{size}></a>] 
    53   elsif el.nil? 
    54     %Q[<img class="#{h place}" src="#{h @image_url}/#{h image}" alt="#{h alt}" title="#{h alt}"#{size}>] 
    55   else 
    56         if @conf.mobile_agent? 
     59  el = nil 
     60  nl = nil 
     61  datum = nil 
     62 
     63  if exif 
     64    if @conf['image_gps.add_info'] 
     65      alt += ' '+exif['Model'].to_s if exif.tag?('Model') 
     66      alt += ' '+exif['FocalLength'].to_s if exif.tag?('FocalLength') 
     67      alt += ' '+exif['ExposureTime'].to_s if exif.tag?('ExposureTime') 
     68      alt += ' '+exif['FNumber'].to_s if exif.tag?('FNumber') 
     69    end 
     70    begin 
     71      if(exif['GPSLatitudeRef'].value == 'N' && exif['GPSLongitudeRef'].value == 'E' && exif['GPSMapDatum'].value =~ /(WGS-?84|TOKYO)/) 
     72        nl = exif['GPSLatitude'].value if exif.tag?('GPSLatitude') 
     73        el = exif['GPSLongitude'].value if exif.tag?('GPSLongitude') 
     74        datum = exif['GPSMapDatum'].value if exif.tag?('GPSMapDatum') 
     75      end 
     76    rescue 
     77    end 
     78  end 
     79 
     80  unless el.nil? 
     81    if @conf.mobile_agent? 
    5782      lat = "#{sprintf("%d.%d.%.2f",*nl)}" 
    5883      lon = "#{sprintf("%d.%d.%.2f",*el)}" 
    59       href = %Q[<a href="#{eznavi}/map?datum=#{datum=='TOKYO'?'1':'0'}&amp;unit=0&amp;lat=+#{lat}&amp;lon=+#{lon}">] 
    6084    else 
    6185      Wgs2Tky.conv!(nl,el) if datum =~ /WGS-?84/ 
    6286      lat ="#{sprintf("%d/%d/%.3f",*nl)}" 
    6387      lon ="#{sprintf("%d/%d/%.3f",*el)}" 
    64       href = %Q[<a href="#{mapion}/c/f?el=#{lon}&amp;nl=#{lat}&amp;scl=10000&amp;pnf=1&amp;uc=1&amp;grp=all&amp;size=500,500">] 
    6588    end 
    66      
    67     href + %Q[<img class="#{h place}" src="#{h @image_url}/#{h image}" alt="#{h alt}" title="#{h alt}" #{size}></a>] 
    68      
    6989  end 
     90 
     91  if thumbnail 
     92    url = %Q[<a href="#{@image_url}/#{image}"><img class="#{place}" src="#{@image_url}/#{image_t}" alt="#{alt}" title="#{alt}"#{size}></a>] 
     93  elsif el.nil? 
     94    url = %Q[<img class="#{place}" src="#{@image_url}/#{image}" alt="#{alt}" title="#{alt}"#{size}>] 
     95  else 
     96    if @conf.mobile_agent? 
     97      url = %Q[<a href="#{eznavi}/map?datum=#{datum=='TOKYO'?'1':'0'}&amp;unit=0&amp;lat=+#{lat}&amp;lon=+#{lon}">] 
     98    else 
     99      url = %Q[<a href="#{mapion}/c/f?el=#{lon}&amp;nl=#{lat}&amp;uc=1&amp;grp=all">] 
     100    end 
     101    url += %Q[<img class="#{place}" src="#{@image_url}/#{image}" alt="#{alt}" title="#{alt}" #{size}></a>] 
     102  end 
     103  url 
    70104end 
    71105 
    72 require 'rexif_gps' 
     106add_conf_proc ('image_gps','image_gps����'etc') do 
     107  if @mode == 'saveconf' then 
     108    @conf['image_gps.add_info'] = @cgi.params['image_gps.add_info'][0] 
     109  end 
     110   
     111  <<-HTML 
     112    <p> 
     113    <h3>���ƾ�����</h3> 
     114    <input type="checkbox" name="image_gps.add_info" value="true" #{if @conf['image_gps.add_info'] then " checked" end}>�����ȥ����ƾ��ä���p> 
     115  HTML 
    73116 
    74 Jpeg.use_class_for(Jpeg::Segment::APP1,Exif) 
    75  
    76 def gps_info(fname) 
    77   fname.untaint 
    78   exif = Jpeg::open(fname,Jpeg::PARSE_HEADER_ONLY).app1 
    79    
    80   return nil unless exif.is_exif? 
    81   return nil unless exif.ifd0.gpsifd 
    82    
    83   gps = exif.ifd0.gpsifd 
    84    
    85   if( gps.latitude_ref.value=="N" && gps.longitude_ref.value=="E" && gps.map_datum.value =~ /(TOKYO|WGS-?84)/) 
    86     return gps.map_datum.value,gps.latitude.value,gps.longitude.value 
    87   end 
    88 rescue 
    89117end