Hi there, I''m writing a little application that parses an image file and extracts the camera settings from the file (the EXIF data) and saves all the fields to the database. The idea is that after awhile people will be able to search based on camera make, model, lens settings, etc... and all the pictures that meet those requirements will be displayed. The picture is stored on the file system, and not in the DB. I''m a little lost as to where to actually perform the parse on the EXIF data though. I know it should probably be done in the image model. In my DB I have columns named "camera_model", "camera_make", "focal_length", etc... Here''s what I ''think'' I need to do to grab the the data from the image file: def load_exif_data(image) self.shutter_speed = image.get_exif_by_entry("ShutterSpeedValue")[0][1] self.aperture = image.get_exif_by_entry("ApertureValue")[0][1] self.iso_speed = image.get_exif_by_entry("ISOSpeedRatings")[0][1] self.camera_model = image.get_exif_by_entry("Model")[0][1] self.focal_length = image.get_exif_by_entry("FocalLength")[0][1] self.flash = image.get_exif_by_entry("Flash")[0][1] self.save end --------------------------------------------- Here''s my whole image model ( it''s a rough model, but it works for now): require ''RMagick'' class Image < ActiveRecord::Base DIRECTORY = ''public/uploaded_images'' THUMBDIRECTORY = ''public/thumbs'' DISPLAY_DIRECTORY = ''/public/uploaded_images/'' DISPLAYTHUMBS_DIRECTORY = ''/public/thumbs/'' after_save :process after_destroy :cleanup def file_data=(file_data) @file_data = file_data write_attribute ''extension'', file_data.original_filename.split(''.'').last.downcase write_attribute("content_type", file_data.content_type) write_attribute("original_name", file_data.original_filename) write_attribute("file_size", file_data.size) end def url path.sub(/^public/,'''') end def to_url return DISPLAYTHUMBS_DIRECTORY + "#{self.id}-thumb.jpg" end def to_large_url return DISPLAY_DIRECTORY + "#{self.id}-full.jpg" end def thumbnail_url thumbnail_path.sub(/^public/,'''') end def path File.join(DIRECTORY, "#{self.id}-full.jpg") end def thumbnail_path File.join(THUMBDIRECTORY, "#{self.id}-thumb.jpg") end def self.display_all_images find(:all, :order => "created_at desc") end private ####### def process if @file_data create_directory cleanup save_fullsize create_fullsize create_thumbnail load_exif_data @file_data = nil end end def save_fullsize File.open(path,''w'') do |file| file.puts @file_data.read end end def create_fullsize img = Magick::Image.read(path).first img.change_geometry!(''700 x 700'') { |cols, rows, large| large.resize!(cols, rows) large.write path } end def create_thumbnail img = Magick::Image.read(path).first img.change_geometry!(''200 x 160'') { |cols, rows, thumbnail| thumbnail.resize!(cols, rows) chopped = thumbnail.chop(0, thumbnail.rows/2, thumbnail.columns/2, thumbnail.rows) chopped.write thumbnail_path } end def create_directory FileUtils.mkdir_p DIRECTORY end def cleanup Dir[File.join(DIRECTORY, "#{self.id}-*")].each do |filename| File.unlink(filename) rescue nil end end end ------------------------------------------ How would I actually link my load_exif_data method up to this model? Thank you, Dave Hoefler -------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060424/f45829ce/attachment-0001.html