Я добавил в метаданные атрибуты "широта, долгота, имя_ географического местоположения, время_изображения". Поэтому, когда я проанализирую, он добавит эти атрибуты вместе с высотой и шириной.
В моем проекте я хочу получить те записи, которые заняли определенное время.
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)?
Заранее спасибо