Sha256: eca47b7eaa662ba40739d1e8dbc6b841efdc81fca198c9fadacd629e072611d8

Contents?: true

Size: 1.51 KB

Versions: 20

Compression:

Stored size: 1.51 KB

Contents

module Ddr
  module Derivatives
    class PtifGenerator < Generator

      def self.output_mime_type
        "image/tiff"
      end

      def generate
        case source_depth.strip
        when '16'
          Dir.mktmpdir do |dir|
            temp_8_bit = make_8_bit(dir)
            run_generator(temp_8_bit)
          end
        when '8'
          run_generator(source)
        else
          raise Ddr::Models::DerivativeGenerationFailure,
                  "Unexpected depth #{source_depth} for source file #{Ddr::Utils.file_path(source)}"
        end
      end

      private

      def run_generator(source_to_use)
        command = "#{vips_command} im_vips2tiff #{Ddr::Utils.file_path(source_to_use)} #{Ddr::Utils.file_path(output)}:#{options}"
        `#{command}`
        $?.exitstatus
      end

      def make_8_bit(tempdir)
        temp_8_bit = File.new(File.join(tempdir, "temp_8_bit.v"), 'wb')
        command = "vips im_msb #{Ddr::Utils.file_path(source)} #{Ddr::Utils::file_path(temp_8_bit)}"
        `#{command}`
        exitstatus = $?.exitstatus
        if exitstatus == 0
          return temp_8_bit
        else
          raise Ddr::Models::DerivativeGenerationFailure,
                  "Error converting #{Ddr::Utils.file_path(source)} to 8-bit"
        end
      end

      def source_depth
        `identify -quiet -format '%[depth]' #{Ddr::Utils.file_path(source)}[0]`
      end

      def vips_command
        Ddr::Models.vips_path ? File.join(Ddr::Models.vips_path, 'vips') : 'vips'
      end

    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
ddr-models-2.11.0 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.10.2 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.10.1 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.10.0 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.10.0.rc2 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.10.0.rc1 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.9.2 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.9.1 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.9.0 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.9.0.rc1 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.8.0 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.8.0.rc1 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.6 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.5 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.4 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.3 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.2 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.1 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.0 lib/ddr/derivatives/ptif_generator.rb
ddr-models-2.7.0.rc1 lib/ddr/derivatives/ptif_generator.rb