Активное хранилище: запрос к столбцу метаданных - PullRequest
0 голосов
/ 09 июля 2019

Я добавил в метаданные атрибуты "широта, долгота, имя_ географического местоположения, время_изображения". Поэтому, когда я проанализирую, он добавит эти атрибуты вместе с высотой и шириной.

В моем проекте я хочу получить те записи, которые заняли определенное время.

require 'exifr/jpeg'
require 'geocoder'

module ActiveStorage
  class Analyzer::ImageAnalyzer < Analyzer
    def metadata
      read_image do |image|
        if rotated_image?(image)
          { width: image.height, height: image.width }
        else
          { width: image.width, height: image.height }
        end.merge(gps_from_exif(image) || {})
      end
    rescue LoadError
      logger.info "Skipping image analysis because the mini_magick gem isn't installed"
      {}
    end

    private

    def gps_from_exif(image)
      return unless image.type == 'JPEG'
      if exif = EXIFR::JPEG.new(image.path).exif
        if gps = exif.fields[:gps]
          result = {
            latitude:  gps.fields[:gps_latitude].to_f,
            longitude: gps.fields[:gps_longitude].to_f,
            altitude:  gps.fields[:gps_altitude].to_f
          }
          result[:image_taken_time] =  exif.date_time_original
          query        = "#{result[:latitude]},#{result[:longitude]}"
          geo_location = Geocoder.search(query).first
          result[:geo_location_name]       = geo_location.address if geo_location.present?
          return result
        end
      end
    rescue EXIFR::MalformedImage, EXIFR::MalformedJPEG
    end
  end
end

Как выполнить запрос к полю метаданных большого двоичного объекта (тип данных text)?

Заранее спасибо

...