Sha256: 8e6f4fdf417cbbf1033420f38c98f117f014e06e5868cefcbde41a0673188bb7

Contents?: true

Size: 975 Bytes

Versions: 1

Compression:

Stored size: 975 Bytes

Contents

require 'vips'

module DragonflyLibvips
  module Analysers
    class ImageProperties
      DPI = 300

      def call(content)
        return {} unless content.ext
        return {} unless SUPPORTED_FORMATS.include?(content.ext.downcase)

        input_options = {}
        input_options['access'] = 'sequential'
        input_options['autorotate'] = true if content.mime_type == 'image/jpeg'
        input_options['dpi'] = DPI if content.mime_type == 'application/pdf'

        img = ::Vips::Image.new_from_file(content.path, **DragonflyLibvips.symbolize_keys(input_options))

        width = img.width
        height = img.height
        xres = img.xres
        yres = img.yres

        {
          'format' => content.ext.to_s,
          'width' => width,
          'height' => height,
          'xres' => xres,
          'yres' => yres,
          'progressive' => (content.mime_type == 'image/jpeg' && img.get('jpeg-multiscan') != 0)
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dragonfly_libvips-2.5.0 lib/dragonfly_libvips/analysers/image_properties.rb