class Magick::Image

def get_exif_by_number(*tag)

Retrieve EXIF data by tag number or all tag/value pairs. The return value is a hash.
def get_exif_by_number(*tag)
  hash = {}
  if tag.empty?
    exif_data = self['EXIF:!']
    exif_data&.split("\n")&.each do |exif|
      tag, value = exif.split('=')
      tag = tag[1, 4].hex
      hash[tag] = value
    end
  else
    get_exif_by_number # ensure properties is populated with exif data
    tag.each do |num|
      rval = self[sprintf('#%04X', num.to_i)]
      hash[num] = rval == 'unknown' ? nil : rval
    end
  end
  hash
end